AuthService.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Modules\Mini\Services;
  3. use App\Base\BaseService;
  4. use App\Exceptions\ClientException;
  5. use App\Models\User\User;
  6. use Illuminate\Support\Arr;
  7. class AuthService extends BaseService
  8. {
  9. public function authByOpenid($openId): string
  10. {
  11. $user = User::where('openid', $openId)->first();
  12. if (is_null($user)) {
  13. $user = new User();
  14. $user->openid = $openId;
  15. $user->save();
  16. }
  17. return $this->encryptToken($user->id);
  18. }
  19. public function login($params)
  20. {
  21. $user = User::where("email", $params['userinfo'])->orWhere("phone", $params['userinfo'])->first();
  22. if (is_null($user)) {
  23. throw new ClientException("用户不存在");
  24. }
  25. if ($user->status == User::STATUS_STOP) {
  26. throw new ClientException("账户已禁用");
  27. }
  28. if (!$user->checkPassword($params['password'])) {
  29. throw new ClientException("账户或密码错误");
  30. }
  31. return $user;
  32. }
  33. public function register($params)
  34. {
  35. if (User::where("email", $params['email'])->first()) {
  36. throw new ClientException("该邮件已经注册了");
  37. }
  38. if (User::where("phone", $params['phone'])->first()) {
  39. throw new ClientException("该手机已经注册了");
  40. }
  41. $user = new User();
  42. $user->email = $params['email'];
  43. $user->phone = $params['phone'];
  44. $user->group_id = 0;
  45. $user->status = User::STATUS_OK;
  46. $user->password = $user->hashPassword($params['password']);
  47. $user->save();
  48. return $user;
  49. }
  50. public function encryptToken($uid)
  51. {
  52. return md5($uid . time()) . $uid;
  53. }
  54. public function decryptToken($token)
  55. {
  56. return substr($token, 32);
  57. }
  58. public function resetPassword($params)
  59. {
  60. $user = User::where("email", $params['email'])->first();
  61. $user->password = $user->hashPassword($params['password']);
  62. $user->save();
  63. return $user;
  64. }
  65. public function updateUserInfo(User $user, $params)
  66. {
  67. if ($params['avatar']) {
  68. $user->extra = array_merge($user->extra, [
  69. "wechat" => [
  70. "avatar" => $params['avatar'],
  71. ],
  72. ]);
  73. }
  74. if ($email = Arr::get($params, "email")) {
  75. $user->email = $email;
  76. }
  77. if ($name = Arr::get($params, "name")) {
  78. $user->name = $name;
  79. }
  80. $user->save();
  81. return $user;
  82. }
  83. }