Newer
Older
flow-task / server / App / Models / Auth.php
  1. <?php
  2.  
  3. namespace App\Models;
  4.  
  5. use \App\Entity\User;
  6. use \App\Entity\Session;
  7.  
  8. class Auth {
  9. public function __construct() {}
  10.  
  11. public function user_name_is_exists(String $uname) :bool {
  12. $tablename = User::get_tablename();
  13. $sql = "SELECT COUNT(*) FROM `{$tablename}` WHERE `name`='{$uname}'";
  14. $result = app() -> db() -> query($sql);
  15. $d = $result -> fetch_assoc();
  16. return $d["COUNT(*)"] ? true : false;
  17. }
  18.  
  19. public function signup(String $uname, String $password) {
  20. $passhash = sha1($password);
  21.  
  22. $user = new User();
  23. $user -> name = $uname;
  24. $user -> passhash = $passhash;
  25. $user -> create_at = get_formatted_timestamp();
  26.  
  27. return $user -> create_new() ? $user : false;
  28. }
  29.  
  30. public function signin(String $uname, String $password) {
  31. $passhash = sha1($password);
  32.  
  33. $tablename = User::get_tablename();
  34. $sql = "SELECT `id` FROM `{$tablename}` WHERE `name`='{$uname}' AND `passhash`='{$passhash}'";
  35. $result = app() -> db() -> query($sql);
  36. if(!$result) {
  37. return false;
  38. }
  39.  
  40. $d = $result -> fetch_assoc();
  41. if(!isset($d["id"])) {
  42. return false;
  43. }
  44.  
  45. $session = new Session();
  46.  
  47. return $session -> init_for_user($d["id"]) ?? false;
  48. }
  49.  
  50. public function signout(String $token) :bool {
  51. $session = new Session();
  52. if(!$session -> init_by_token($token)) {
  53. return false;
  54. }
  55.  
  56. return $session -> kill();
  57. }
  58. }