/** * Signs in the user on the application. * * @param User $user The User id * @param boolean $remember Whether or not to remember the user * @param Doctrine_Connection $con A Doctrine_Connection object */ public function signIn($user, $remember = false, $con = null) { // signin $this->setAttribute('user_id', $user->getId(), 'securityUser'); $this->setAuthenticated(true); $this->clearCredentials(); $this->addCredentials($user->getAllPermissionNames()); // remember? if ($remember) { $expiration_age = sfConfig::get('app_user_remember_key_expiration_age', 14 * 86400); // remove old keys Doctrine::getTable('UserRememberKey')->createQuery()->delete()->where('created_at < ?', date('Y-m-d H:i:s', time() - $expiration_age))->execute(); // remove other keys from this user Doctrine::getTable('UserRememberKey')->createQuery()->delete()->where('user_id = ?', $user->getId())->execute(); // generate new keys $key = $this->generateRandomKey(); // save key $rk = new UserRememberKey(); $rk->remember_key = $key; $rk->User = $user; $rk->ip_address = $_SERVER['REMOTE_ADDR']; $rk->save($con); // make key as a cookie $remember_cookie = 'remember'; sfContext::getInstance()->getResponse()->setCookie($remember_cookie, $key, time() + $expiration_age); } }