/** * Get the currently authenticated user or null. * * @return Illuminate\Auth\UserInterface|null */ protected function user($request) { if (!($token = $this->auth->setRequest($request)->getToken())) { return 401; } try { $user = $this->auth->authenticate($token); } catch (JWTException $e) { return 401; } if (!$user) { return 401; } return $user; }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, \Closure $next) { if (!($token = $this->auth->setRequest($request)->getToken())) { return response()->json(\JsonHelper::getErrorResponse(\HttpResponse::HTTP_BAD_REQUEST, 'Token is missing.'), \HttpResponse::HTTP_BAD_REQUEST); } $user = $this->auth->authenticate($token); if (!$user) { return response()->json(\JsonHelper::getErrorResponse(\HttpResponse::HTTP_NOT_FOUND, 'User not found.'), \HttpResponse::HTTP_NOT_FOUND); } return $next($request); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // Step 1. Fail immediately if we don't have a token in the request. if (!($token = $this->auth->setRequest($request)->getToken())) { return new JsonResponse(['error' => 'authorization required'], Response::HTTP_UNAUTHORIZED); } try { // Step 2. Validate the given token. $member = $this->auth->authenticate($token); $permissions = array_merge(['level' => 1000, 'roles' => []], array_get(config('route.permissions'), $request->route()->getName(), [])); // This ensures that super roles are not overwritten by // route permission configurations. $permissions['roles'] = array_merge($permissions['roles'], $this->roles); $level = $permissions['level']; // Step 3. Check the auth level encoded in the token. if ($this->auth->getPayload()->get('level') < $level) { return new JsonResponse(['error' => 'authentication level not high enough'], Response::HTTP_FORBIDDEN); } // Step 4. Verify the role(s) of the member. $roles = $permissions['roles']; if (!$member->hasRole($roles)) { return new JsonResponse(['error' => 'invalid permissions'], Response::HTTP_FORBIDDEN); } // Step 5. Attach member to the current request. $request->member = $member; } catch (TokenExpiredException $e) { return new JsonResponse(['error' => 'token has expired'], Response::HTTP_FORBIDDEN); } catch (TokenInvalidException $e) { return new JsonResponse(['error' => 'token is invalid'], Response::HTTP_FORBIDDEN); } catch (JWTException $e) { return new JsonResponse(['error' => 'unknown error'], Response::HTTP_INTERNAL_SERVER_ERROR); } // Step 6. ??? if (!$member) { return new JsonResponse(['error' => 'entity does not exist'], Response::HTTP_INTERNAL_SERVER_ERROR); } // Step 7. Profit! return $next($request); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->jwt->setRequest($request)->parseToken()->invalidate(); return $next($request); }
/** * Set the request instance. * * @param \Tymon\JWTAuth\Request $request * @static */ public static function setRequest($request) { return \Tymon\JWTAuth\JWTAuth::setRequest($request); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @return int */ public function handle($request) { $token = $this->auth->setRequest($request)->getToken(); $owner_id = env('acl.middleware.owner_id', 'owner_id'); return $this->auth->getPayload($token)->get($owner_id); }
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (!($token = $this->auth->setRequest($request)->getToken())) { return $this->respond('tymon.jwt.absent', 'Token is not provided.', 400); } try { $user = $this->auth->authenticate($token); } catch (TokenExpiredException $e) { return $this->respond('tymon.jwt.expired', 'Token has expired.', $e->getStatusCode(), [$e]); } catch (JWTException $e) { return $this->respond('tymon.jwt.invalid', 'Token is invalid.', $e->getStatusCode(), [$e]); } if (!$user) { return $this->respond('tymon.jwt.user_not_found', 'User not found.', 404); } $this->events->fire('tymon.jwt.valid', $user); return $next($request); }