ApiAuthService.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. declare(strict_types=1);
  3. namespace app\api\service\auth;
  4. use app\api\service\auth\Adapter;
  5. use think\facade\Cache;
  6. use app\common\model\User;
  7. use app\common\model\UserToken;
  8. use think\facade\Config;
  9. class ApiAuthService
  10. {
  11. protected $allowFields = ['id', 'nickname', 'mobile', 'avatar', 'balance', 'score'];
  12. public function login(string $username, string $password, int $terminal = 0)
  13. {
  14. $token=uuid();
  15. $user=User::where('username',$username)->find();
  16. if(!$user){
  17. throw new \Exception('账号或密码错误');
  18. }
  19. if($user->password!=md5(md5($password.$user->salt))){
  20. //throw new \Exception('账号或密码错误' . md5(md5($password.$user->salt)));
  21. throw new \Exception('账号或密码错误');
  22. }
  23. if($user->status!='normal'){
  24. throw new \Exception('账号已经被禁用');
  25. }
  26. if($terminal==1 && strpos($user->role, "3") === false){
  27. throw new \Exception('账号已经被禁用');
  28. }
  29. //刷新token
  30. $token = MysqlAdapter::login($token, $user);
  31. $user->loginfailure = 0;
  32. $user->logintime = time();
  33. $user->loginip = request()->ip();
  34. $user->save();
  35. Cache::store('redis')->set('user_info_'.$user->id, $user->toArray(), Config::get('app.user_login.keepalive_time'));
  36. $data = [
  37. 'userinfo' => $user,
  38. 'token' => $token,
  39. 'page' => '',//page:stock_clerk 仓库管理员 worker:打包员工
  40. ];
  41. $role_arr = explode(',', $user->role);
  42. if(in_array('3', $role_arr)){
  43. $data['page'] = 'stock_clerk';//仓库管理员
  44. }else if(in_array('4', $role_arr)){
  45. $data['page'] = 'worker';//打包员工
  46. }
  47. return $data;
  48. }
  49. public function updateToken(int $uid, array $arr)
  50. {
  51. return UserToken::where('user_id', $uid)->update($arr);
  52. }
  53. }