| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- /*
- * @Author: your name
- * @Date: 2021-04-22 17:20:17
- * @LastEditTime: 2021-04-22 17:35:07
- * @LastEditors: your name
- * @Description: In User Settings Edit
- * @FilePath: \10dsm\app\Http\Middleware\AuthTokenByMust.php
- */
- namespace App\Http\Middleware;
- use App\Modes\Proxy;
- use App\Modes\User;
- use Auth;
- use Closure;
- use phpDocumentor\Reflection\DocBlock\Tags\Var_;
- use Tymon\JWTAuth\Exceptions\JWTException;
- use Tymon\JWTAuth\Http\Middleware\BaseMiddleware;
- use Tymon\JWTAuth\Exceptions\TokenExpiredException;
- use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
- class AuthTokenByMust extends BaseMiddleware
- {
- /**
- * @author fatty
- * @date 2019/3/11
- * @param $request
- * @param Closure $next
- * @return mixed
- * @description
- * 必须认证访问令牌的接口
- */
- public function handle($request, Closure $next)
- {
- try {
- $this->checkForToken($request);
- try {
- if ($result = $this->auth->parseToken()->authenticate()) {
- //wsl add start
- $uid=Auth::id();
- $users=User::whereId($uid)->select('status','province','city','district','is_frontend','ssid','updated_at')->first();
- if(!empty($users->ssid)&&$request->header('sessid')!=$users->ssid){
- return showJson(555,'您的账户已在其他地方登录,您被迫下线');
- }
- if(!empty($users)&&$users->is_frontend==1){
- if($users->status==2){
- return showJson(444,'您的账户已被冻结,如有疑问请联系管理员');
- }
- $proxy=Proxy::where('province','=',$users->province)
- ->where('city','=',$users->city)
- ->where('district','=',$users->district)->select('status')->first();
- if(!empty($proxy)&&$proxy->status==0){
- return showJson(444,'您所处的区域已被冻结,如有疑问请联系管理员');
- }
- }
- //wsl add end
- return $next($request);
- }
- return showJson(102, '请登录');
- //throw new UnauthorizedHttpException('jwt-auth', '未登录');
- } catch (TokenExpiredException $exception) {
- $token = $this->auth->refresh();
- try {
- Auth::guard('api')->onceUsingId($this->auth->manager()->getPayloadFactory()->buildClaimsCollection()->toPlainArray()['sub']);
- } catch (JWTException $exception) {
- return showJson(102, $exception->getMessage());
- //throw new UnauthorizedHttpException('jwt-auth', $exception->getMessage());
- }
- }
- return showJson(103, '您的登录信息已过期,请重新登录!', ['token' => $token]);
- } catch (\Exception $exception) {
- return showJson(102, $exception->getMessage());
- }
- }
- }
|