/** * Verification success: authenticate or create user * * @param string $uid - Identity * @param Zend_OpenId_Extension_Sreg $sreg * @return void */ public function verifiedCallback($uid, Zend_OpenId_Extension_Sreg $sreg) { $user = Doctrine::getTable('sfOpenAuthUser')->findOneBy('identity', $uid); if (!$user) { $user = new sfOpenAuthUser(); $user->setIdentity($uid); $props = $sreg->getProperties(); if (!empty($props['fullname'])) { $user->setName($props['fullname']); } if (!empty($props['email'])) { $user->setEmail($props['email']); } } $user->setDateTimeObject('last_login', new DateTime()); $user->save(); $authUser = $this->getUser(); $authUser->signIn($user); // remember // remove old keys $ttl = sfConfig::get('app_open_auth_remember_ttl'); $q = Doctrine::getTable('sfOpenAuthRememberKey')->clean($user, $ttl); // save key $rk = new sfOpenAuthRememberKey(); $rk->setUser($user); $rk->setIpAddress($_SERVER['REMOTE_ADDR']); $rk->setRememberKey(sfOpenAuthRememberKey::generateRandomKey()); $rk->save(); // make key as a cookie $this->getResponse()->setCookie(sfConfig::get('app_open_auth_remember_cookie'), $rk->getRememberKey(), time() + $ttl); $this->dispatcher->notifyUntil(new sfEvent($this, 'app.auth.success')); $this->redirect(sfConfig::get('app_open_auth_redirect_signin')); }