Example #1
0
 /**
  * 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];
 }