|
|
@@ -0,0 +1,73 @@
|
|
|
+<?php
|
|
|
+ require_once('MyPDO.php');
|
|
|
+ class User {
|
|
|
+ private $_login;
|
|
|
+ private $_password;
|
|
|
+ private const USER_TABLE = "Users";
|
|
|
+
|
|
|
+ function getLogin() : string {
|
|
|
+ return $this->_login;
|
|
|
+ }
|
|
|
+
|
|
|
+ function getPassword() : string {
|
|
|
+ return $this->_password;
|
|
|
+ }
|
|
|
+
|
|
|
+ function setLogin(string $login) : void {
|
|
|
+ $this->_login = $login;
|
|
|
+ }
|
|
|
+
|
|
|
+ function setPassword(string $password) : void {
|
|
|
+ $this->_password = $password;
|
|
|
+ }
|
|
|
+
|
|
|
+ function __construct(string $login, string $password = null) {
|
|
|
+ $this->_login = $login;
|
|
|
+ $this->_password = $password;
|
|
|
+ }
|
|
|
+
|
|
|
+ function __destruct() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function exists() : bool {
|
|
|
+ $pdo = MyPDO::pdo();
|
|
|
+ $req = $pdo->prepare('SELECT passwd FROM ' . self::USER_TABLE . ' WHERE login = :login');
|
|
|
+ $req->bindValue(':login', $this->getLogin(), PDO::PARAM_STR);
|
|
|
+ if (!$req->execute()) {
|
|
|
+ throw new Exception('Problème requête');
|
|
|
+ }
|
|
|
+ if ($req->rowCount() == 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $res = $req->fetch();
|
|
|
+ if (!password_verify($this->getPassword(), $res['passwd'])) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ function create() : void {
|
|
|
+ $pdo = MyPDO::pdo();
|
|
|
+ $req = $pdo->prepare('INSERT INTO ' . self::USER_TABLE . ' (login, passwd) VALUES (:login, :passwd)');
|
|
|
+ $req->bindValue(':login', $this->getLogin(), PDO::PARAM_STR);
|
|
|
+ $req->bindValue(':passwd', password_hash($this->getPassword(), PASSWORD_DEFAULT), PDO::PARAM_STR);
|
|
|
+ if (!$req->execute()) {
|
|
|
+ throw new Exception('Problème requête');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function changePassword() : void {
|
|
|
+ $pdo = MyPDO::pdo();
|
|
|
+ $req = $pdo->prepare('UPDATE ' . self::USER_TABLE . ' SET passwd = :passwd WHERE login = :login');
|
|
|
+ $req->bindValue(':passwd', password_hash($this->getPassword(), PASSWORD_DEFAULT));
|
|
|
+ $req->bindValue(':login', $this->getLogin());
|
|
|
+ if (!$req->execute()) {
|
|
|
+ throw new Exception('Problème requête');
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|