Example #1
0
 /**
  * Creates a brand new authorization code
  * @param $user_id
  * @param $client_id
  * @param $scope
  * @param string $audience
  * @param null $redirect_uri
  * @param string $access_type
  * @param string $approval_prompt
  * @param bool $has_previous_user_consent
  * @return AuthorizationCode
  */
 public function createAuthorizationCode($user_id, $client_id, $scope, $audience = '', $redirect_uri = null, $access_type = OAuth2Protocol::OAuth2Protocol_AccessType_Online, $approval_prompt = OAuth2Protocol::OAuth2Protocol_Approval_Prompt_Auto, $has_previous_user_consent = false)
 {
     //create model
     $code = null;
     $value = null;
     do {
         $code = AuthorizationCode::create($user_id, $client_id, $scope, $audience, $redirect_uri, $access_type, $approval_prompt, $has_previous_user_consent, $this->configuration_service->getConfigValue('OAuth2.AuthorizationCode.Lifetime'));
         $value = $code->getValue();
     } while (!$this->cache_service->addSingleValue($value . '.mk_auth_code', $value . '.mk_auth_code'));
     $hashed_value = Hash::compute('sha256', $value);
     //stores on cache
     $this->cache_service->storeHash($hashed_value, array('client_id' => $code->getClientId(), 'scope' => $code->getScope(), 'audience' => $code->getAudience(), 'redirect_uri' => $code->getRedirectUri(), 'issued' => $code->getIssued(), 'lifetime' => $code->getLifetime(), 'from_ip' => $code->getFromIp(), 'user_id' => $code->getUserId(), 'access_type' => $code->getAccessType(), 'approval_prompt' => $code->getApprovalPrompt(), 'has_previous_user_consent' => $code->getHasPreviousUserConsent()), intval($code->getLifetime()));
     //stores brand new auth code hash value on a set by client id...
     $this->cache_service->addMemberSet($client_id . self::ClientAuthCodePrefixList, $hashed_value);
     $this->cache_service->incCounter($client_id . self::ClientAuthCodeQty, self::ClientAuthCodeQtyLifetime);
     return $code;
 }