// +---------------------------------------------------------------------- namespace app\http\middleware\store; use app\Request; use app\services\store\LoginServices; use crmeb\interfaces\MiddlewareInterface; use think\facade\Config; /** * Class AuthTokenMiddleware * @package app\http\middleware\store */ class AuthTokenMiddleware implements MiddlewareInterface { /** * @param Request $request * @param \Closure $next * @throws \Psr\SimpleCache\InvalidArgumentException * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function handle(Request $request, \Closure $next) { $token = trim(ltrim($request->header(Config::get('cookie.token_name', 'Authori-zation')), 'Bearer')); /** @var LoginServices $services */ $services = app()->make(LoginServices::class); $outInfo = $services->parseToken($token); $request->macro('storeId', function () use (&$outInfo) { return (int)$outInfo['store_id']; }); $request->macro('storeStaffId', function () use (&$outInfo) { return (int)$outInfo['id']; }); $request->macro('storeStaffInfo', function () use (&$outInfo) { return $outInfo; }); return $next($request); } }