Cookie.php 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Services\Auth;
  3. use App\Models\User;
  4. use App\Models\Node;
  5. use App\Utils;
  6. use App\Utils\Hash;
  7. use App\Services\Config;
  8. class Cookie extends Base
  9. {
  10. public function login($uid, $time)
  11. {
  12. $user = User::find($uid);
  13. $key = Hash::cookieHash($user->pass);
  14. $expire_in = $time+time();
  15. Utils\Cookie::set([
  16. "uid" => $uid,
  17. "email" => $user->email,
  18. "key" => $key,
  19. "ip" => md5($_SERVER["REMOTE_ADDR"].Config::get('key').$uid.$expire_in),
  20. "expire_in" => $expire_in
  21. ], $expire_in);
  22. }
  23. public function getUser()
  24. {
  25. $uid = Utils\Cookie::get('uid');
  26. $key = Utils\Cookie::get('key');
  27. $ip = Utils\Cookie::get('ip');
  28. $expire_in = Utils\Cookie::get('expire_in');
  29. if ($uid == null) {
  30. $user = new User();
  31. $user->isLogin = false;
  32. return $user;
  33. }
  34. $nodes=Node::where("node_ip", "=", $_SERVER["REMOTE_ADDR"])->first();
  35. if ($ip != md5($_SERVER["REMOTE_ADDR"].Config::get('key').$uid.$expire_in) && $nodes==null && Config::get('enable_login_bind_ip')=='true') {
  36. $user = new User();
  37. $user->isLogin = false;
  38. return $user;
  39. }
  40. if ($expire_in<time()) {
  41. $user = new User();
  42. $user->isLogin = false;
  43. return $user;
  44. }
  45. $user = User::find($uid);
  46. if ($user == null) {
  47. $user = new User();
  48. $user->isLogin = false;
  49. return $user;
  50. }
  51. if (Hash::cookieHash($user->pass) != $key) {
  52. $user->isLogin = false;
  53. return $user;
  54. }
  55. $user->isLogin = true;
  56. return $user;
  57. }
  58. public function logout()
  59. {
  60. $time = time() - 1000;
  61. Utils\Cookie::set([
  62. "uid" => null,
  63. "email" => null,
  64. "key" => null
  65. ], $time);
  66. }
  67. }