<?php namespace app; // 应用请求对象类 use catchAdmin\permissions\model\Users; use catcher\CatchAuth; use catcher\Code; use catcher\exceptions\FailedException; use catcher\exceptions\LoginFailedException; use thans\jwt\exception\TokenBlacklistException; use thans\jwt\exception\TokenExpiredException; use thans\jwt\exception\TokenInvalidException; class Request extends \think\Request { protected $auth; /** * login user * * @time 2020年01月09日 * @param null $guard * @return mixed */ public function user($guard = null) { if (!$this->auth) { $this->auth = new CatchAuth; } try { $user = $this->auth->guard($guard ? : config('catch.auth.default.guard'))->user(); if ($user->status == Users::DISABLE) { throw new LoginFailedException('该用户已被禁用', Code::USER_FORBIDDEN); } } catch (\Exception $e) { if ($e instanceof TokenExpiredException) { throw new FailedException('token 过期', Code::LOGIN_EXPIRED); } if ($e instanceof TokenBlacklistException) { throw new FailedException('token 被加入黑名单', Code::LOGIN_BLACKLIST); } if ($e instanceof TokenInvalidException) { throw new FailedException('token 不合法', Code::LOST_LOGIN); } throw new FailedException('认证失败: '. $e->getMessage(), $e->getCode()); } return $user; } }