public function execute($filterChain) { if (!$this->isFirstCall()) { return; } $this->prefix = sfConfig::get('app_phpbb_prefix', 'Phpbb'); // When we are logged out of phpBB, the system sets a cookie with id = 1. // Because we want to log out of Symfony when this happens, we check for // cookies with user id different from the current logged in symfony user. if ($this->getContext()->getUser()->isAuthenticated() && $this->getContext()->getRequest()->getCookie(avrPhpbbConfig::getCookieName() . '_u') != $this->getContext()->getUser()->getUserId()) { $this->getContext()->getUser()->signOut(); } // We only want to invoke the sign in if the user is not already authenticated. if (!$this->getContext()->getUser()->isAuthenticated()) { $cookieName = avrPhpbbConfig::getCookieName(); // If the cookies are ok, the user gets signed in. if (avrPhpbbSessions::checkCookie($cookieName)) { $userId = $this->getContext()->getRequest()->getCookie($cookieName . '_u'); $user = avrPropelTools::invokePeerMethod($this->prefix . 'Users', 'retrieveByPk', $userId); // Since the user is already signed in to phpBB, we only sign in to Symfony $this->getContext()->getUser()->signInSymfony($user); } } $filterChain->execute(); }
public static function getUserByUsername($username) { $prefix = sfConfig::get('app_phpbb_prefix', 'Phpbb'); $c = new Criteria(); avrPropelTools::criteriaAdd($c, $prefix . 'Users', 'username', $username); return avrPropelTools::invokePeerMethod($prefix . 'Users', 'doSelectOne', $c); }
public static function checkCookie($cookieName) { $prefix = sfConfig::get('app_phpbb_prefix', 'Phpbb'); $request = sfContext::getInstance()->getRequest(); $sessionKey = $request->getCookie($cookieName . '_k'); $sessionId = $request->getCookie($cookieName . '_sid'); $userId = $request->getCookie($cookieName . '_u'); $c = new Criteria(); avrPropelTools::criteriaAdd($c, $prefix . 'Sessions', 'session_id', $sessionId); avrPropelTools::criteriaAdd($c, $prefix . 'Sessions', 'session_user_id', $userId); $sessions = avrPropelTools::invokePeerMethod($prefix . 'Sessions', 'doCount', $c); return $sessions == 1; }
public function getPhpbbUser() { if (!$this->user && ($id = $this->getAttribute('user_id', null, 'avrPhpbbSecurityUser'))) { $this->user = avrPropelTools::invokePeerMethod($this->prefix . "Users", "retrieveByPK", $id); if (!$this->user) { // the user does not exist anymore in the database $this->signOut(); // @todo Create avrPhpbbException throw new sfException('The user does not exist anymore in the database.'); } } return $this->user; }
public function execute($filterChain) { $this->prefix = sfConfig::get('app_phpbb_prefix', 'Phpbb'); // We only want to invoke the remembering filter if the user is not already authenticated if ($this->isFirstCall() && !$this->getContext()->getUser()->isAuthenticated()) { if ($cookie = $this->getContext()->getRequest()->getCookie(sfConfig::get('app_phpbb_remember_cookie_name', 'avrPhpbbRememberKey'))) { $key = unserialize(base64_decode($cookie)); $c = new Criteria(); avrPropelTools::criteriaAdd($c, $this->prefix . 'ProfileFieldData', 'PF_REMEMBER_KEY', $key[0]); avrPropelTools::criteriaAdd($c, $this->prefix . 'ProfileFieldData', 'USER_ID', $key[1]); avrPropelTools::criteriaAddJoin($c, $this->prefix . 'ProfileFieldData', 'USER_ID', $this->prefix . 'User', 'USER_ID'); $user = avrPropelTools::invokePeerMethod($this->prefix . 'User', 'doSelectOne', $c); // If the user is found with the given key and user id, the user is logged in. Otherwise nothing happens. if ($user) { $this->getContext()->getUser()->signIn($user); } } } $filterChain->execute(); }
public static function setConfigValueFor($input, $value) { $prefix = sfConfig::get('app_phpbb_prefix', 'Phpbb'); $c = new Criteria(); avrPropelTools::criteriaAdd($c, $prefix . 'Config', 'config_name', $input); $newestUserConfig = avrPropelTools::invokePeerMethod($prefix . 'Config', 'doSelectOne', $c); $newestUserConfig->setConfigValue($value); $newestUserConfig->save(); sfProcessCache::delete('config_values'); sfProcessCache::delete('config_values_dynamic'); }