}
function user_by_id($id){
- $sgbd = $this->sgbd();
- $user = array();
- try{
- $sql = "SELECT * from #--users WHERE id=".$this->eq($id);
- $rst = $sgbd->query($sql);
- if($v_rst = $sgbd->fetch_assoc($rst)) $user = $v_rst;
- $sgbd->free_result($rst);
- if(($roles = $this->list_user_roles($user["id"])) !== false) $user["roles"] = $roles;
- else $user = false;
- }
- catch(Exception $e) { $user = false; }
- return $user;
+ $env = $this->env();
+ $user = $env->get_model("users");
+ if($user->load("id", $id) === false) return false;
+ return $user->get_values();
}
function user($login){
- $sgbd = $this->sgbd();
- $user = array();
- try{
- $sql = "SELECT * from #--users WHERE login=".$this->eq($login);
- $rst = $sgbd->query($sql);
- if($v_rst = $sgbd->fetch_assoc($rst)) $user = $v_rst;
- $sgbd->free_result($rst);
- if($user){
- if(($roles = $this->list_user_roles($user["id"])) !== false) $user["roles"] = $roles;
- else $user = false;
- }
- }
- catch(Exception $e) { $user = false; }
- return $user;
+ $env = $this->env();
+ $user = $env->get_model("users");
+ if($user->load("login", $login) === false) return false;
+ return $user->get_values();
}
function user_exists($login){
.", email=".$this->eq($email)
." WHERE id=".$this->eq($id);
$sgbd->query($sql);
- $sql = "DELETE FROM #--users_roles WHERE id_user=".$this->eq($id);
- $sgbd->query($sql);
+ if(!$this->clear_user_roles($id)) return false;
foreach($roles as $id_role){
- $sql =
- "INSERT INTO #--users_roles(id_user, id_role) VALUES"
- ."( ".$this->eq($id)
- .", ".$this->eq($id_role)
- .")";
- $sgbd->query($sql);
+ if(!$this->add_user_role($id, $id_role)) return false;
}
}
catch(Exception $e) { return false; }
return true;
}
+ function clear_user_roles($id_user){
+ $sgbd = $this->sgbd();
+ try{
+ $sql = "DELETE FROM #--users_roles WHERE id_user=".$this->eq($id_user);
+ $sgbd->query($sql);
+ }
+ catch(Exception $e) { return false; }
+ return true;
+ }
+
+ function add_user_role($id_user, $id_role){
+ $sgbd = $this->sgbd();
+ try{
+ $sql =
+ "INSERT INTO #--users_roles(id_user, id_role) VALUES"
+ ."( ".$this->eq($id_user)
+ .", ".$this->eq($id_role)
+ .")";
+ $sgbd->query($sql);
+ }
+ catch(Exception $e) { return false; }
+ return true;
+ }
+
function del_user($login){
if(($user = $this->user($login)) !== false){
$sgbd = $this->sgbd();
return array();
}
- # ----------------------------------------------------------------------------------------
- # log in / out
- #
-
- function login($login, $password){
- if(($user = $this->user($login)) !== false){
- if($this->password_ok($user, $password)){
- if(!$this->set_session($user)) $user = false;
- }
- else{
- $this->clear_session();
- $user = array();
- }
- }
- return $user;
- }
-
- function logout(){
- return $this->clear_session();
- }
-
- function user_ok($user){
- return
- strcmp(md5($user["password"].$_SESSION["id"]), $_SESSION["pass"]) == 0
- && $_SESSION["ip"] == $_SERVER["REMOTE_ADDR"];
- }
-
- function password_ok($user, $password){
- if(!$user) return false;
- return
- strcmp(md5($user["password"].$_SESSION["id"]), $password) == 0
- && $_SESSION["ip"] == $_SERVER["REMOTE_ADDR"];
- }
-
- # ----------------------------------------------------------------------------------------
- # session
- #
-
- function load_session(){
- @session_start();
- if(!isset($_SESSION["id"])) $this->clear_session();
- if(
- $user = (
- isset($_COOKIE["user"]) || isset($_SESSION["user"]) ?
- $this->user(isset($_COOKIE["user"]) ? $_COOKIE["user"] : $_SESSION["user"])
- : array()
- )
- ){
- if(isset($_COOKIE["user"])) $this->set_session($user);
- if(!$this->user_ok($user)){
- $this->clear_session();
- $user = array();
- }
- }
- $this->user = $user;
- return $user;
- }
-
- function set_session($user){
- $_SESSION["user"] = $user["login"];
- $_SESSION["pass"] = md5($user["password"].$_SESSION["id"]);
- $env = $this->env();
- return setcookie("user", $user["login"], time() + (60 * 60 * 24 * 7), $env->path("web"));
- }
-
- function clear_session(){
- unset($_SESSION["user"]);
- unset($_SESSION["pass"]);
- $_SESSION["ip"] = $_SERVER["REMOTE_ADDR"];
- $_SESSION["id"] = md5(rand());
- $env = $this->env();
- return setcookie("user", "", 0, $env->path("web"));
- }
-
- function get_session_user(){
- return $this->user;
- }
-
- # ----------------------------------------------------------------------------------------
- # uploads
- #
-
- function check_user_uploads_dir($user = null){
- $env = $this->env();
- if((!isset($user) || !$user) && !isset($this->user["id"])) return false;
- $user_dir = $env->path("content")."uploads/".(isset($user) && $user ? $user : $this->user["id"]);
- if(!file_exists($user_dir)) @mkdir($user_dir);
- return file_exists($user_dir);
- }
-
}
?>
\ No newline at end of file