| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace App\Http\Middleware;
- use App\Modes\SystemUser;
- 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 AdminsAuth extends BaseMiddleware
- {
- public function handle($request, Closure $next)
- {
- try {
- $this->checkForToken($request);
- try {
- if ($this->auth->parseToken()->authenticate()) {
- // 设置管理的用户
- self::setInvite();
- self::createHandelLogs($request);
- return $next($request);
- }
- return showJson(102, '认证失败backend');
- } catch (TokenExpiredException $exception) {
- try {
- Auth::guard(config('permission.guard'))->onceUsingId($this->auth->manager()->getPayloadFactory()->buildClaimsCollection()->toPlainArray()['sub']);
- } catch (JWTException $exception) {
- // 验证失败
- return showJson(102, 1003);
- }
- }
- // 过期
- return showJson(103, 1005);
- } catch (\Exception $exception) {
- // 访问令牌为空
- return showJson(102, $exception->getMessage());
- }
- }
- /**
- * 根据用户的类型设置该用户的管理列表
- * @author lyh
- * @date 2019/4/1
- * @description
- */
- private static function setInvite()
- {
- $user = Auth::user();
- // 代理商管理员可以管理的用户列表
- if ($user->is_super == 3) {
- if ($user->district) {
- $ids = User::whereDistrict($user->district)->where('level', '<', $user->level)->whereIn('is_super', [0, 3])->pluck('id');
- } else if ($user->city) {
- $ids = User::whereCity($user->city)->where('level', '<', $user->level)->whereIn('is_super', [0, 3])->pluck('id');
- } else if ($user->province) {
- $ids = User::whereProvince($user->province)->where('level', '<', $user->level)->whereIn('is_super', [0, 3])->pluck('id');
- }
- // 保存当前用户可以管理的管理员列表
- $admins = User::whereInvitor(Auth::id())->whereIsSuper(3)->pluck('id');
- \Cache::put('ids', $ids, 300);
- \Cache::put('admins', $admins, 300);
- }
- }
- /*
- * 生成操作日志
- * wsl 20190806
- * */
- private static function createHandelLogs($request){
- $user = Auth::user();
- $user_id=$user->id;
- $not_arr=[
- 'admins/home/statistics',
- 'admins/home/withdraw',
- 'admins/home/upgrade',
- ];
- $name=\DB::table('system_permissions')->where('name','=',$request->path())->orWhere('name','=',\Route::currentRouteName())->value('remark');
- $name=empty($name)?'':$name;
- if('GET' != $request->method() && !in_array($request->path(),$not_arr)){
- $data=[
- 'operator'=>$user_id,
- 'path'=>$request->path(),
- 'ip'=>$request->ip(),
- 'path_remark'=>$name
- ];
- \DB::table('system_operation_log')->insert($data);
- }
- }
- }
|