AuthService.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace app\admin\service\user;
  3. use app\model\SysUser;
  4. use support\Db;
  5. use support\Request;
  6. use Tinywan\Jwt\JwtToken;
  7. class AuthService
  8. {
  9. public static function login($params)
  10. {
  11. DB::beginTransaction();
  12. try {
  13. $user = SysUser::findByLoginName($params['username']);
  14. if (!$user || $user->user_login_pass != md5(sha1($params['password']))) {
  15. throw new \Exception('账号 / 密码错误');
  16. }
  17. // 禁用用户
  18. if ($user->user_status == 'DISABLED') {
  19. throw new \Exception('当前账户已禁用,请联系管理员');
  20. }
  21. switch ($user->user_status) {
  22. case 'DISABLED':
  23. throw new \Exception('当前账户已禁用,请联系管理员');
  24. break;
  25. case 'PENDING':
  26. // 待激活用户登录后自动激活
  27. if (SysUser::where('user_id', $user->user_id)->update(['user_status' => 'ACTIVED'])) {
  28. throw new \Exception('用户状态修改失败');
  29. }
  30. break;
  31. default:
  32. break;
  33. }
  34. $extend = [
  35. 'id' => $user->user_id,
  36. 'client' => 'admin'
  37. ];
  38. $token = JwtToken::generateToken($extend);
  39. // 提交事务
  40. DB::commit();
  41. return json_success('', $token);
  42. } catch (\Exception $e) {
  43. // 回滚事务
  44. DB::rollBack();
  45. return json_fail($e->getMessage());
  46. }
  47. }
  48. /**
  49. * @Desc 刷新token
  50. * @Author Gorden
  51. * @Date 2024/2/21 17:10
  52. *
  53. * @return \support\Response
  54. */
  55. public static function refreshToken()
  56. {
  57. $token = JwtToken::refreshToken();
  58. return json_success('Token已刷新', $token);
  59. }
  60. public static function userInfo(Request $request)
  61. {
  62. $user = SysUser::select('join_user_role_id', 'join_user_dept_id', 'user_status', 'user_category', 'user_name', 'user_login_name', 'user_mobile', 'user_remark', 'user_extend_json', 'user_addtimes')
  63. ->where('user_id', $request->adminId)
  64. ->first()
  65. ->toArray();
  66. return json_success('', $user);
  67. }
  68. }