Advertisement
Guest User

Untitled

a guest
Aug 9th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.78 KB | None | 0 0
  1.  
  2. abstract class AbstractSQLBase {
  3.    
  4.     const DRIVER = 'mysql';
  5.    
  6.     protected $pdo;
  7.    
  8.     public function __construct() {
  9.         $dsn = self::DRIVER.':host='.Config::SQL_HOST.';port='.Config::SQL_PORT.';dbname='.Config::SQL_DATABASE_NAME;
  10.         try {
  11.             $this->pdo = new PDO($dsn, Config::SQL_USER, Config::SQL_PASSWORD);
  12.             $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  13.         } catch (PDOException $e) {
  14.             print "Erreur SQL : " . $e->getMessage() . "<br/>";
  15.             die();
  16.         }
  17.     }
  18.  
  19. }
  20.  
  21. class UserManager extends AbstractSQLBase {
  22.  
  23.     private function hashPassword($password) {
  24.         return md5('sa'.$password.'lt');
  25.     }
  26.  
  27.     public function authenticate($username, $password) {
  28.         $query = $this->pdo->prepare("SELECT id, first_name, last_name, email, username, password, avatar_path, is_admin FROM users WHERE username=:user");
  29.         $query->bindValue(':user',$username);
  30.         $query->execute();
  31.        
  32.         $result = $query->fetch(PDO::FETCH_OBJ);
  33.        
  34.         if($result && $result->password == $this->hashPassword($password) ) {
  35.             return new User($result->id, $result->first_name,$result->last_name,$result->email,$result->username,$result->avatar_path,$result->is_admin);
  36.         } else {
  37.             throw new UserNotFoundException('Login incorrect');
  38.         }
  39.     }
  40.    
  41.     private function getUserByParam($param_id,$param_value,$error) {
  42.         $query = $this->pdo->prepare("SELECT id, first_name, last_name, email, username, password, avatar_path, is_admin FROM users WHERE ".$param_id."=:param");
  43.         $query->bindValue(':param',$param_value);
  44.         $query->execute();     
  45.  
  46.         $result = $query->fetch(PDO::FETCH_OBJ);
  47.         if($result) {
  48.             return new User($result->id, $result->first_name,$result->last_name,$result->email,$result->username,$result->avatar_path,$result->is_admin);
  49.         } else {
  50.             throw new UserNotFoundException($error);
  51.         }
  52.     }
  53.    
  54.     public function getUserById($id) {
  55.         return $this->getUserByParam("id",$id,'ID introuvable');
  56.     }
  57.    
  58.     public function getUserByUsername($username) {
  59.         return $this->getUserByParam("username",$username,'Username introuvable');
  60.     }
  61.    
  62.     public function getUserByEmail($email) {
  63.         return $this->getUserByParam("email",$email,'Email introuvable');
  64.     }
  65.    
  66.     public function register(User $user, $password) {
  67.         $query = $this->pdo->prepare("INSERT INTO users (first_name, last_name, email, username, password, avatar_path, is_admin) VALUES (:first_name, :last_name, :email, :username, :password, :avatar_path, 0)");
  68.         $query->bindValue(':first_name', $user->getFirst_name());
  69.         $query->bindValue(':last_name', $user->getLast_name());
  70.         $query->bindValue(':email', $user->getEmail());
  71.         $query->bindValue(':username', $user->getUsername());
  72.         $query->bindValue(':password', $this->hashPassword($password));
  73.         $query->bindValue(':avatar_path', $user->getAvatar_path());
  74.         return $query->execute();
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement