User.class.php 2.27 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
<?php

/*
 @nom: User
 @auteur: Idleman (idleman@idleman.fr)
 @description:  Classe de gestion des utilisateurs
 */

class User extends MysqlEntity{

11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
    protected $id,$login,$password;
    protected $TABLE_NAME = 'user';
    protected $CLASS_NAME = 'User';
    protected $object_fields =
    array(
        'id'=>'key',
        'login'=>'string',
        'password'=>'string'
    );

    function __construct(){
        parent::__construct();
    }

    function setId($id){
        $this->id = $id;
    }

    function exist($login,$password,$salt=''){
        $userManager = new User();
        return $userManager->load(array('login'=>$login,'password'=>User::encrypt($password,$salt)));
    }

34 35 36 37 38
    function get($login){
        $userManager = new User();
        return $userManager->load(array('login'=>$login,));
    }

39 40 41 42 43 44
    function getToken() {
        assert('!empty($this->password)');
        assert('!empty($this->login)');
        return sha1($this->password.$this->login);
    }

45
    static function existAuthToken($auth=null){
46 47 48
        $result = false;
        $userManager = new User();
        $users = $userManager->populate('id');
49
        $phpAuth = strtolower(@$_SERVER['PHP_AUTH_USER']);
50 51
        if (empty($auth)) $auth = @$_COOKIE['leedStaySignedIn'];
        foreach($users as $user){
52 53 54 55
            if ($user->getToken()==$auth || strtolower($user->login)===$phpAuth){
                $result = $user;
                break;
            }
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
        }
        return $result;
    }

    function setStayConnected() {
        ///@TODO: set the current web directory, here and on del
        setcookie('leedStaySignedIn', $this->getToken(), time()+31536000);
    }

    static function delStayConnected() {
        setcookie('leedStaySignedIn', '', -1);
    }

    function getId(){
        return $this->id;
    }

    function getLogin(){
        return $this->login;
    }

    function setLogin($login){
        $this->login = $login;
    }

    function getPassword(){
        return $this->password;
    }

    function setPassword($password,$salt=''){
        $this->password = User::encrypt($password,$salt);
    }

    static function encrypt($password, $salt=''){
        return sha1($password.$salt);
    }

    static function generateSalt() {
        return ''.mt_rand().mt_rand();
    }
96 97 98 99

}

?>