/** * It creates an access token, a session, and links * scopes mentionned in $scopes to the session and * access token, it finally returns the new access token * * It associates the 'webapp' app */ public static function createAccessTokenFromUserId($user_id, $scopes, $ttl = 3600) { $user = User::where('id', '=', $user_id)->first(); if (!$user) { return false; } $session = new Session(); $session->owner_type = 'user'; $session->owner_id = $user->id; $session->app_id = 'webapp'; $session->save(); $accessToken = new AccessToken(); $accessToken->session_id = $session->id; $accessToken->token = SecureKey::generate(); $accessToken->expire_time = DB::raw('FROM_UNIXTIME(' . ($ttl + time()) . ')'); $accessToken->save(); foreach ($scopes as $_scope) { $scope = Scope::where('identifier', '=', $_scope)->first(); if ($scope) { $session->scopes()->attach($scope); $accessToken->scopes()->attach($scope); } } $refreshToken = new RefreshToken(); $refreshToken->access_token_id = $accessToken->id; $refreshToken->token = SecureKey::generate(); $refreshToken->expire_time = DB::raw('FROM_UNIXTIME(' . (604800 + time()) . ')'); $refreshToken->save(); return ["token" => $accessToken->token, "refresh_token" => $refreshToken->token, "ttl" => $ttl]; }
/** * Triggers the given list of tasks * on each refresh token if task * is supported on refresh tokens */ public function foreachRefreshToken($tasks) { $refreshTokens = RefreshToken::get(); $this->outputStr("Analyzing " . sizeof($refreshTokens) . " refresh tokens..."); $n_deleted = 0; foreach ($refreshTokens as $refreshTokens) { if (in_array('delete_lonely_RT', $tasks)) { if ($this->deleteLonelyRefreshToken($refreshTokens)) { $n_deleted++; } } } if (in_array('delete_lonely_RT', $tasks) && $n_deleted > 0) { $this->outputStr(" deleted " . $n_deleted . " lonely refresh tokens."); } $this->outputStr("\n\n"); }
public function delete(RefreshTokenEntity $token) { $refreshToken = RefreshToken::where('token', '=', $token)->delete(); }