コード例 #1
0
 public function authenticate()
 {
     $result = parent::authenticate();
     $context = sfContext::getInstance();
     if ($context->getRequest()->hasParameter('token')) {
         $context->getUser()->setRegisterToken($context->getRequest()->getParameter('token'));
     }
     if ($this->getAuthForm()->getRedirectHtml()) {
         // We got a valid HTML contains JavaScript to redirect to the OpenID provider's site.
         // This HTML must not include any contents from symfony, so this script will stop here.
         echo $this->getAuthForm()->getRedirectHtml();
         exit;
     } elseif ($this->getAuthForm()->getRedirectUrl()) {
         header('Location: ' . $this->getAuthForm()->getRedirectUrl());
         exit;
     }
     if ($this->getAuthForm()->isValid() && $this->getAuthForm()->getValue('openid') && !$result && $this->isRegisterable()) {
         $member = $context->getUser()->getMember(true);
         if (!$member || !$member->getId()) {
             $member = Doctrine::getTable('Member')->createPre();
             $member->generateRegisterToken();
         }
         $member->setConfig('openid', $this->getAuthForm()->getValue('openid'));
         $this->appendMemberInformationFromProvider($member);
         $member->save();
         $result = $member->getId();
     }
     return $result;
 }
コード例 #2
0
 /**
  * @see opAuthAdapter::activate()
  */
 public function activate()
 {
     parent::activate();
     $member = sfContext::getInstance()->getUser()->getMember();
     if ($member) {
         if ($token = Doctrine::getTable('MemberConfig')->retrieveByNameAndMemberId('mobile_address_token', $member->getId())) {
             $token->delete();
         }
         if ($token = Doctrine::getTable('MemberConfig')->retrieveByNameAndMemberId('pc_address_token', $member->getId())) {
             $token->delete();
         }
     }
     return $member;
 }
コード例 #3
0
 public function getAuthParameters()
 {
     $params = parent::getAuthParameters();
     $params['mobile_uid'] = $this->getRequest()->getMobileUID(false);
     $params['mobile_cookie_uid'] = $this->getRequest()->getMobileUidCookie();
     if (is_callable(array($this->getRequest(), 'getMobileFallbackUID')) && $this->getAuthConfig('allow_fallback_uid')) {
         $fallbacks = $this->getRequest()->getMobileFallbackUID();
         if (isset($fallbacks[0])) {
             $params['mobile_uid_fallback_op3'] = $fallbacks[0];
         }
         if (isset($fallbacks[1])) {
             $params['mobile_uid_fallback_op2'] = $fallbacks[1];
         }
     }
     return $params;
 }
 public function authenticate()
 {
     $result = parent::authenticate();
     // Callback from Twitter
     $callbackToken = $this->getRequest()->getParameter('oauth_token');
     $callbackVerifier = $this->getRequest()->getParameter('oauth_verifier');
     if ($callbackToken && $callbackVerifier) {
         // Get user access tokens out of the session.
         $accessToken = sfContext::getInstance()->getUser()->getAttribute('accessToken');
         if (0 == strcmp($callbackToken, $accessToken['oauth_token'])) {
             $instance = OpenPNEOAuth::getInstance($this->urlApiRoot, $this->consumerKey, $this->consumerSecret);
             $newToken = $instance->getAccessToken($callbackToken, $callbackVerifier);
             $twitterUserId = $newToken['user_id'];
             $twitterScreenName = $newToken['screen_name'];
             $twitterAccessToken = $newToken['oauth_token'];
             $twitterTokenSecret = $newToken['oauth_token_secret'];
             $line = Doctrine::getTable('MemberConfig')->findOneByNameAndValue("twitter_user_id", $twitterUserId);
             if ($line) {
                 // 登録済み
                 $member_id = (int) $line->member_id;
                 $member = Doctrine::getTable('Member')->find($member_id);
             } else {
                 // 新規登録
                 $member = Doctrine::getTable('Member')->createPre();
                 $member->setConfig('twitter_user_id', $twitterUserId);
             }
             $member->setConfig('twitter_screen_name', $twitterScreenName);
             $member->setConfig('twitter_oauth_token', $twitterAccessToken);
             $member->setConfig('twitter_oauth_token_secret', $twitterTokenSecret);
             $member->setName($twitterScreenName);
             $member->setIsActive(true);
             $member->save();
             $result = $member->getId();
         }
         return $result;
     }
     //コールバックでは無く、最初にログインボタン押されたらこちら
     $instance = OpenPNEOAuth::getInstance($this->urlApiRoot, $this->consumerKey, $this->consumerSecret);
     $requestToken = $instance->getRequestToken($this->urlCallback);
     // Set user access tokens out of the session.
     sfContext::getInstance()->getUser()->setAttribute('accessToken', $requestToken);
     header('Location: ' . $this->urlAuthorize . $requestToken['oauth_token']);
     exit;
 }