Get the raw Payload instance.
public static getPayload ( mixed $token = false ) : Tymon\JWTAuth\Payload | ||
$token | mixed | |
return | Tymon\JWTAuth\Payload |
public function info() { try { $token = \JWTAuth::getToken(); $payload = \JWTAuth::getPayload($token); } catch (JWTException $e) { return ['error' => 'no auth token provided']; } $user = User::where('id', $payload['user_id'])->first(); return $user; }
/** * @return string * @throws \DreamFactory\Core\Exceptions\UnauthorizedException */ public static function refreshToken() { $token = Session::getSessionToken(); try { $newToken = \JWTAuth::refresh($token); $payload = \JWTAuth::getPayload($newToken); $userId = $payload->get('user_id'); $user = User::find($userId); $userInfo = $user->toArray(); ArrayUtils::set($userInfo, 'is_sys_admin', $user->is_sys_admin); Session::setSessionToken($newToken); Session::setUserInfo($userInfo); static::setTokenMap($payload, $newToken); } catch (TokenExpiredException $e) { $payloadArray = \JWTAuth::manager()->getJWTProvider()->decode($token); $forever = boolval(ArrayUtils::get($payloadArray, 'forever')); if ($forever) { $userId = ArrayUtils::get($payloadArray, 'user_id'); $user = User::find($userId); Session::setUserInfoWithJWT($user, $forever); } else { throw new UnauthorizedException($e->getMessage()); } } return Session::getSessionToken(); }
/** * @param $token * @param bool $allowExpireRefresh * @return bool */ function is_jwt_token_valid_for_refresh($token, $allowExpireRefresh = false) { $is_jwt_token_valid_for_refresh = false; try { $payload = \JWTAuth::getPayload($token); $exp = $payload->get('exp'); $nbf = $payload->get('nbf'); if ($exp > 0 && $nbf > 0) { $nowTime = \Carbon\Carbon::now('UTC'); $expireTime = \Carbon\Carbon::createFromTimestampUTC($exp); $validTime = \Carbon\Carbon::createFromTimestampUTC($nbf); // if now time is after valid time if ($nowTime->gt($validTime)) { $minutesAfterValid = $nowTime->diffInMinutes($validTime); $minutesBeforeExpire = $nowTime->diffInMinutes($expireTime); $totalValidLength = $validTime->diffInMinutes($expireTime); $halfAmountOfMinutes = floor($totalValidLength / 2); if ($minutesAfterValid >= $halfAmountOfMinutes) { $is_jwt_token_valid_for_refresh = true; } } } } catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) { if ($allowExpireRefresh) { $is_jwt_token_valid_for_refresh = true; } } catch (\Tymon\JWTAuth\Exceptions\JWTException $e) { } return $is_jwt_token_valid_for_refresh; }