| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- /**
- * @package merchant
- *
- * @author xaboy
- * @day 2020/7/23
- *
- *
- */
- namespace app\common\middleware;
- use app\common\repositories\user\UserRepository;
- use app\common\repositories\user\UserVisitDayRepository;
- use app\Request;
- use crmeb\exceptions\ApiException;
- use crmeb\exceptions\AuthException;
- use crmeb\interfaces\MiddlewareInterface;
- use crmeb\services\JwtTokenService;
- use think\cache\driver\Redis;
- use think\facade\Cache;
- use think\facade\Db;
- use think\Response;
- class CheckSiteOpenMiddleware implements MiddlewareInterface
- {
- public function handle(Request $request, \Closure $next): Response
- {
- if (systemConfig('site_open') === '0') {
- return app('json')->make(501, '站点已关闭');
- }
- if($request->header('source')=='yhc') {
- try {
- $token = trim($request->header('X-Token'));
- if (strpos($token, 'Bearer') === 0) {
- $token = trim(substr($token, 6));
- if ($token) {
- $repository = app()->make(UserRepository::class);
- $service = new JwtTokenService();
- try {
- $payload = $service->parseToken($token);
- if ('user' == $payload->jti[1]) {
- $user = $repository->get($payload->jti[0]);
- if ($user) {
- $merId = $request->header('merId');
- $enterprise_user = Db::name("enterprise_user")->where(['uid' => $user['uid'], 'mer_id' => $merId])->find();
- if ($enterprise_user && $enterprise_user['status'] == 1) {
- throw new AuthException('账号已被禁用,请联系公司客服处理~',41000);
- }
- }
- // var_dump($user['uid']);
- }
- } catch (ApiException $e) {//Token 过期
- // throw new AuthException('token 已过期');
- }
- }
- }
- }catch (ApiException $e) {//Token 过期
- // throw new AuthException('token 已过期');
- }
- }
- /**
- * @var $redis Redis
- */
- // 记录浏览量
- // $userVisitDayRepository = app()->make(UserVisitDayRepository::class);
- // $userVisitDayRepository->incrUserVisitDay(date('Y-m-d'));
- $redis = Cache::store('redis')->handler();
- $redis->incr('user_visit_day');
- $ip = $request->header('x-forwarded-for');
- if (!empty($ip)) {
- $redis->lpush('user_visit', $ip);
- }
- return $next($request);
- }
- }
|