AdminHandler.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace app\webscoket\handler;
  3. use app\common\repositories\system\admin\AdminRepository;
  4. use ln\services\JwtTokenService;
  5. use Firebase\JWT\ExpiredException;
  6. use Swoole\Server;
  7. use think\db\exception\DataNotFoundException;
  8. use think\db\exception\DbException;
  9. use think\db\exception\ModelNotFoundException;
  10. use Throwable;
  11. /**
  12. * Class Handler
  13. * @package app\webscoket
  14. * @author zfy
  15. * @day 2020-04-29
  16. */
  17. class AdminHandler
  18. {
  19. /**
  20. * @var Server
  21. */
  22. protected $server;
  23. /**
  24. * AdminHandler constructor.
  25. * @param Server $server
  26. */
  27. public function __construct(Server $server)
  28. {
  29. $this->server = $server;
  30. }
  31. /**
  32. * @param array $data
  33. * @return mixed
  34. * @author zfy
  35. * @day 2020-05-06
  36. */
  37. public function test(array $data)
  38. {
  39. return app('json')->success($data);
  40. }
  41. /**
  42. * @param array $data
  43. * @return mixed
  44. * @throws DataNotFoundException
  45. * @throws DbException
  46. * @throws ModelNotFoundException
  47. * @author zfy
  48. * @day 2020-05-06
  49. */
  50. public function login(array $data)
  51. {
  52. $token = $data['token'] ?? '';
  53. if (!$token) return app('json')->fail('token 无效');
  54. /**
  55. * @var AdminRepository $repository
  56. */
  57. $repository = app()->make(AdminRepository::class);
  58. $service = new JwtTokenService();
  59. try {
  60. $payload = $service->parseToken($token);
  61. } catch (ExpiredException $e) {
  62. $repository->checkToken($token);
  63. $payload = $service->decode($token);
  64. } catch (Throwable $e) {//Token 过期
  65. return app('json')->fail('token 已过期');
  66. }
  67. if ('admin' != $payload->jti[1])
  68. return app('json')->fail('无效的 token');
  69. $admin = $repository->get($payload->jti[0]);
  70. if (!$admin)
  71. return app('json')->fail('账号不存在');
  72. if (!$admin['status'])
  73. return app('json')->fail('账号已被禁用');
  74. return app('json')->success(['uid' => $admin->admin_id, 'data' => $admin->toArray()]);
  75. }
  76. }