You are here

class RestfulTokenAuthController in RESTful 7

@file Contains \RestfulTokenAuthController

Hierarchy

Expanded class hierarchy of RestfulTokenAuthController

1 string reference to 'RestfulTokenAuthController'
restful_token_auth_entity_info in modules/restful_token_auth/restful_token_auth.module
Implements hook_entity_info().

File

modules/restful_token_auth/includes/RestfulTokenAuthController.php, line 8
Contains \RestfulTokenAuthController

View source
class RestfulTokenAuthController extends \EntityAPIController {

  /**
   * Create a new access_token entity with a referenced refresh_token.
   *
   * @param int $uid
   *   The user ID.
   *
   * @return \RestfulTokenAuth
   *   The created entity.
   */
  public function generateAccessToken($uid) {
    $refresh_token = $this
      ->generateRefreshToken($uid);

    // Create a new access token.
    $values = array(
      'uid' => $uid,
      'type' => 'access_token',
      'created' => REQUEST_TIME,
      'name' => t('Access token for: @uid', array(
        '@uid' => $uid,
      )),
      'token' => drupal_random_key(),
      'expire' => $this
        ->getExpireTime(),
      'refresh_token_reference' => array(
        LANGUAGE_NONE => array(
          array(
            'target_id' => $refresh_token->id,
          ),
        ),
      ),
    );
    $access_token = $this
      ->create($values);
    $this
      ->save($access_token);
    return $access_token;
  }

  /**
   * Create a refresh token for the current user
   *
   * It will delete all the existing refresh tokens for that same user as well.
   *
   * @param int $uid
   *   The user ID.
   *
   * @return \RestfulTokenAuth
   *   The token entity.
   */
  private function generateRefreshToken($uid) {

    // Check if there are other refresh tokens for the user.
    $query = new \EntityFieldQuery();
    $results = $query
      ->entityCondition('entity_type', 'restful_token_auth')
      ->entityCondition('bundle', 'refresh_token')
      ->propertyCondition('uid', $uid)
      ->execute();
    if (!empty($results['restful_token_auth'])) {

      // Delete the tokens.
      entity_delete_multiple('restful_token_auth', array_keys($results['restful_token_auth']));
    }

    // Create a new refresh token.
    $values = array(
      'uid' => $uid,
      'type' => 'refresh_token',
      'created' => REQUEST_TIME,
      'name' => t('Refresh token for: @uid', array(
        '@uid' => $uid,
      )),
      'token' => drupal_random_key(),
    );
    $refresh_token = $this
      ->create($values);
    $this
      ->save($refresh_token);
    return $refresh_token;
  }

  /**
   * Return the expiration time.
   *
   * @throws RestfulServerConfigurationException
   *
   * @return int
   *   Timestamp with the expiration time.
   */
  protected function getExpireTime() {
    $now = new \DateTime();
    try {
      $expiration = $now
        ->add(new \DateInterval(variable_get('restful_token_auth_expiration_period', 'P1D')));
    } catch (\Exception $e) {
      throw new \RestfulServerConfigurationException('Invalid DateInterval format provided.');
    }
    return $expiration
      ->format('U');
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DrupalDefaultEntityController::$cache protected property Whether this entity type should use the static cache.
DrupalDefaultEntityController::$entityCache protected property Static cache of entities, keyed by entity ID.
DrupalDefaultEntityController::$entityInfo protected property Array of information about the entity.
DrupalDefaultEntityController::$entityType protected property Entity type for this controller instance.
DrupalDefaultEntityController::$hookLoadArguments protected property Additional arguments to pass to hook_TYPE_load().
DrupalDefaultEntityController::$idKey protected property Name of the entity's ID field in the entity database table.
DrupalDefaultEntityController::$revisionKey protected property Name of entity's revision database table field, if it supports revisions.
DrupalDefaultEntityController::$revisionTable protected property The table that stores revisions, if the entity supports revisions.
DrupalDefaultEntityController::attachLoad protected function Attaches data to entities upon loading. 4
DrupalDefaultEntityController::cacheGet protected function Gets entities from the static cache. 1
DrupalDefaultEntityController::cacheSet protected function Stores entities in the static entity cache.
DrupalDefaultEntityController::cleanIds protected function Ensures integer entity IDs are valid.
DrupalDefaultEntityController::filterId protected function Callback for array_filter that removes non-integer IDs.
EntityAPIController::$bundleKey protected property
EntityAPIController::$cacheComplete protected property
EntityAPIController::$defaultRevisionKey protected property
EntityAPIController::buildContent public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::buildContent
EntityAPIController::buildQuery protected function Overrides DrupalDefaultEntityController::buildQuery(). Overrides DrupalDefaultEntityController::buildQuery 1
EntityAPIController::create public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::create
EntityAPIController::delete public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::delete 1
EntityAPIController::deleteRevision public function Implements EntityAPIControllerRevisionableInterface::deleteRevision(). Overrides EntityAPIControllerRevisionableInterface::deleteRevision
EntityAPIController::export public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::export 1
EntityAPIController::import public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::import
EntityAPIController::invoke public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::invoke 1
EntityAPIController::load public function Overridden. Overrides DrupalDefaultEntityController::load 1
EntityAPIController::query public function Builds and executes the query for loading.
EntityAPIController::renderEntityProperty protected function Renders a single entity property.
EntityAPIController::resetCache public function Overrides DrupalDefaultEntityController::resetCache(). Overrides DrupalDefaultEntityController::resetCache 1
EntityAPIController::save public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::save 1
EntityAPIController::saveRevision protected function Saves an entity revision.
EntityAPIController::view public function Implements EntityAPIControllerInterface. Overrides EntityAPIControllerInterface::view 1
EntityAPIController::__construct public function Overridden. Overrides DrupalDefaultEntityController::__construct 1
RestfulTokenAuthController::generateAccessToken public function Create a new access_token entity with a referenced refresh_token.
RestfulTokenAuthController::generateRefreshToken private function Create a refresh token for the current user
RestfulTokenAuthController::getExpireTime protected function Return the expiration time.