AdminAuthTokenMiddleware.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace app\adminapi\middleware;
  3. use app\models\merchant\Merchant;
  4. use app\Request;
  5. use crmeb\exceptions\AuthException;
  6. use crmeb\interfaces\MiddlewareInterface;
  7. use crmeb\repositories\AdminRepository;
  8. use crmeb\services\CacheService;
  9. use think\facade\Config;
  10. class AdminAuthTokenMiddleware implements MiddlewareInterface
  11. {
  12. public function handle(Request $request, \Closure $next)
  13. {
  14. $authInfo = null;
  15. $token = trim(ltrim($request->header(Config::get('cookie.token_name', 'Authori-zation')), 'Bearer'));
  16. $md_u = strtolower(trim(ltrim($request->header(Config::get('cookie.md5_url', 'Ex-U')), 'KiToken')));
  17. // $md_u = 'e81c1f5749545c5f7d247b3a100ffe62';
  18. $mer = Merchant::where('local_md5', $md_u)->find();
  19. if (!$mer) {
  20. throw new AuthException('访问异常');
  21. }
  22. $adminInfo = AdminRepository::adminParseToken($token);
  23. if ($adminInfo['mer_id'] == 0) {
  24. $mer_id = $mer['id'];
  25. } else {
  26. if (in_array($mer['id'], explode(',', $adminInfo['mer_id']))) {
  27. $mer_id = $mer['id'];
  28. } else {
  29. CacheService::clearToken($token);
  30. throw new AuthException('账号异常,请重新登录', 410000);
  31. }
  32. }
  33. Request::macro('isAdminLogin', function () use (&$adminInfo) {
  34. return !is_null($adminInfo);
  35. });
  36. Request::macro('adminId', function () use (&$adminInfo) {
  37. return $adminInfo['id'];
  38. });
  39. Request::macro('adminInfo', function () use (&$adminInfo) {
  40. return $adminInfo;
  41. });
  42. Request::macro('mer_id', function () use (&$mer_id) {
  43. return $mer_id;
  44. });
  45. return $next($request);
  46. }
  47. }