UserMiddleware.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | [ WE CAN DO IT MORE SIMPLE ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2018-2020 rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Author: TABLE ME
  8. // +----------------------------------------------------------------------
  9. // | Date: 2020-08-30 14:59
  10. // +----------------------------------------------------------------------
  11. namespace app\api\middleware;
  12. use app\model\api\Member;
  13. use app\model\api\Site;
  14. use app\Request;
  15. use Firebase\JWT\JWT;
  16. use library\exceptions\AuthException;
  17. use library\interfaces\MiddlewareInterface;
  18. use think\facade\Env;
  19. class UserMiddleware implements MiddlewareInterface
  20. {
  21. public function handle(Request $request, \Closure $next)
  22. {
  23. $token =$request->header('TOKEN');
  24. $request->user = $this->checkUser($token,$request->site['secret_key']);
  25. return $next($request);
  26. }
  27. /**
  28. * 检查数据是否正常
  29. * @param $secret_key
  30. */
  31. private function checkUser($token,$secret_key) {
  32. if(empty($secret_key)) {
  33. throw new AuthException('请重新登录', -99);
  34. }
  35. try{
  36. list($headb64, $bodyb64, $cryptob64) = explode('.', $token);
  37. $payload = JWT::jsonDecode(JWT::urlsafeB64Decode($bodyb64));
  38. //$token = $payload->token;
  39. //$uid = @crypto_decrypt(base64_decode($token),$secret_key);
  40. $uid = $payload->uid;
  41. $memData = (new Member)
  42. ->where('uid',$uid)
  43. ->where('sassid',\request()->site['sassid'])
  44. ->find();
  45. if(empty($memData)) {
  46. throw new AuthException('请重新登录', -99);
  47. }
  48. //站点停用
  49. if(empty($memData['status'])) {
  50. throw new AuthException('用户已经停用。', -99);
  51. }
  52. return $memData->toArray();
  53. }catch (\Throwable $e) {
  54. //var_dump($e->getMessage());
  55. throw new AuthException('请重新登录', -99);
  56. }
  57. }
  58. }