User.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. require_once('MyPDO.php');
  3. class User {
  4. private $_login;
  5. private $_password;
  6. private const USER_TABLE = "Users";
  7. function getLogin() : string {
  8. return $this->_login;
  9. }
  10. function getPassword() : string {
  11. return $this->_password;
  12. }
  13. function setLogin(string $login) : void {
  14. $this->_login = $login;
  15. }
  16. function setPassword(string $password) : void {
  17. $this->_password = $password;
  18. }
  19. function __construct(string $login, string $password = null) {
  20. $this->_login = $login;
  21. $this->_password = $password;
  22. }
  23. function __destruct() {
  24. }
  25. function exists() : bool {
  26. $pdo = MyPDO::pdo();
  27. $req = $pdo->prepare('SELECT passwd FROM ' . self::USER_TABLE . ' WHERE login = :login');
  28. $req->bindValue(':login', $this->getLogin(), PDO::PARAM_STR);
  29. if (!$req->execute()) {
  30. throw new Exception('Problème requête');
  31. }
  32. if ($req->rowCount() == 0) {
  33. return false;
  34. }
  35. $res = $req->fetch();
  36. if (!password_verify($this->getPassword(), $res['passwd'])) {
  37. return false;
  38. }
  39. return true;
  40. }
  41. function create() : void {
  42. $pdo = MyPDO::pdo();
  43. $req = $pdo->prepare('INSERT INTO ' . self::USER_TABLE . ' (login, passwd) VALUES (:login, :passwd)');
  44. $req->bindValue(':login', $this->getLogin(), PDO::PARAM_STR);
  45. $req->bindValue(':passwd', password_hash($this->getPassword(), PASSWORD_DEFAULT), PDO::PARAM_STR);
  46. if (!$req->execute()) {
  47. throw new Exception('Problème requête');
  48. }
  49. }
  50. function changePassword() : void {
  51. $pdo = MyPDO::pdo();
  52. $req = $pdo->prepare('UPDATE ' . self::USER_TABLE . ' SET passwd = :passwd WHERE login = :login');
  53. $req->bindValue(':passwd', password_hash($this->getPassword(), PASSWORD_DEFAULT));
  54. $req->bindValue(':login', $this->getLogin());
  55. if (!$req->execute()) {
  56. throw new Exception('Problème requête');
  57. }
  58. }
  59. function delete() : void {
  60. $pdo = MyPDO::pdo();
  61. $req = $pdo->prepare('DELETE FROM Users WHERE login = :login');
  62. $req->bindValue(':login', $this->getLogin());
  63. if (!$req->execute()) {
  64. throw new Exception('Problème requête');
  65. }
  66. }
  67. }