MyUser.php 2.5 KB

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