Esempio n. 1
0
 public function complete_openid()
 {
     $v = Loader::helper('validation/numbers');
     $oa = new OpenIDAuth();
     $oa->setReturnURL($this->openIDReturnTo);
     $oa->complete();
     $response = $oa->getResponse();
     if ($response->code == OpenIDAuth::E_CANCEL) {
         $this->error->add(t('OpenID Verification Cancelled'));
         $this->clearOpenIDSession();
     } else {
         if ($response->code == OpenIDAuth::E_FAILURE) {
             $this->error->add(t('OpenID Authentication Failed: %s', $response->message));
             $this->clearOpenIDSession();
         } else {
             switch ($response->code) {
                 case OpenIDAuth::S_USER_CREATED:
                 case OpenIDAuth::S_USER_AUTHENTICATED:
                     if ($v->integer($response->message)) {
                         User::loginByUserID($response->message);
                         $this->set('uOpenID', $response->openid);
                         $oa->reinstatePreviousRequest();
                         $this->finishLogin();
                     }
                     break;
                 case OpenIDAuth::E_REGISTRATION_EMAIL_INCOMPLETE:
                     // we don't have an email address, but the account is valid
                     // valid display identifier comes back in message
                     $_SESSION['uOpenIDRequested'] = $response->message;
                     $_SESSION['uOpenIDError'] = OpenIDAuth::E_REGISTRATION_EMAIL_INCOMPLETE;
                     break;
                 case OpenIDAuth::E_REGISTRATION_EMAIL_EXISTS:
                     // an email address came back with us from the openid server
                     // but that email already exists
                     $_SESSION['uOpenIDRequested'] = $response->openid;
                     $_SESSION['uOpenIDExistingUser'] = $response->user;
                     $_SESSION['uOpenIDError'] = OpenIDAuth::E_REGISTRATION_EMAIL_EXISTS;
                     break;
             }
         }
     }
     $this->set('oa', $oa);
 }