/**
  * @see sfFilter
  */
 public function execute($filterChain)
 {
     if ($this->isFirstCall() && $this->context->getUser()->isAnonymous()) {
         $sfGuardUser = sfFacebook::getSfGuardUserByFacebookSession();
         if ($sfGuardUser) {
             $this->getContext()->getUser()->signIn($sfGuardUser, true);
         }
     }
     $filterChain->execute();
 }
 public function execute($filterChain)
 {
     if ($this->isFirstCall() && !$this->getContext()->getUser()->isAuthenticated()) {
         if (sfConfig::get('sf_logging_enabled')) {
             sfContext::getInstance()->getLogger()->info('{sfFacebookApplicationFilter} Trying to authenticate the current user');
         }
         $sfGuardUser = sfFacebook::getSfGuardUserByFacebookSession();
         if ($sfGuardUser) {
             $this->getContext()->getUser()->signIn($sfGuardUser, true);
             $this->getContext()->getUser()->setCurrentFacebookUid(sfFacebookGuardAdapter::getUserProfileProperty($sfGuardUser, 'facebook_uid'));
         } else {
             if (sfConfig::get('sf_logging_enabled')) {
                 sfContext::getInstance()->getLogger()->info('{sfFacebookApplicationFilter} No user found');
             }
         }
     }
     $filterChain->execute();
 }
 /**
  * @see sfFilter
  */
 public function execute($filterChain)
 {
     $cookieName = sfConfig::get('app_sf_guard_plugin_remember_cookie_name', 'sfRemember');
     if ($this->isFirstCall() && $this->context->getUser()->isAnonymous() && ($cookie = $this->context->getRequest()->getCookie($cookieName))) {
         /*
         $q = Doctrine_Query::create()
               ->from('sfGuardRememberKey r')
               ->innerJoin('r.sfGuardUser u')
               ->where('r.remember_key = ?', $cookie);
         */
         $sfGuardUser = sfFacebook::getGuardAdapter()->retrieveSfGuardUserByCookie($cookie);
         if ($sfGuardUser) {
             $this->getContext()->getUser()->signIn($sfGuardUser, true);
             $fb_sfGuardUser = sfFacebook::getSfGuardUserByFacebookSession();
             if ($fb_sfGuardUser && $fb_sfGuardUser->getId() == $sfGuardUser->getId()) {
                 $this->getContext()->getUser()->setCurrentFacebookUid(sfFacebookGuardAdapter::getUserProfileProperty($sfGuardUser, 'facebook_uid'));
             }
         }
     }
     $filterChain->execute();
 }
 /**
  * Sign in with the Facebook account
  * @author fabriceb
  * @since 2009-05-17
  *
  */
 public function executeFacebookSignin()
 {
     $user = $this->getUser();
     // first check if user is already logged and not yet Facebook connected
     if ($user->isAuthenticated() && !sfFacebook::getGuardAdapter()->getUserFacebookUid($user->getGuardUser()) && sfFacebook::getFacebookClient()->get_loggedin_user()) {
         $sfGuardUser = $user->getGuardUser();
         sfFacebook::getGuardAdapter()->setUserFacebookUid($sfGuardUser, sfFacebook::getFacebookClient()->get_loggedin_user());
         $sfGuardUser->save();
     } else {
         $create_automatically = !sfConfig::get('app_facebook_redirect_after_connect', false);
         $sfGuardUser = sfFacebook::getSfGuardUserByFacebookSession($create_automatically);
     }
     if ($sfGuardUser) {
         $this->getContext()->getUser()->signIn($sfGuardUser);
         $referer = $user->getAttribute('referer', $this->getRequest()->getReferer());
         $user->getAttributeHolder()->remove('referer');
         $signin_url = sfConfig::get('app_sf_guard_plugin_success_signin_url', $referer);
         $forward = $this->getRequestParameter('forward');
         $signin_url = $forward != '' ? $forward : $signin_url;
         $this->redirect('' != $signin_url ? $signin_url : '@homepage');
     }
     // check if user forgot to activate the account
     $sfGuardUser = sfFacebook::getSfGuardUserByFacebookSession($create_automatically, false);
     // the user does not exist even in unactivated mode
     if (!$sfGuardUser) {
         if ($this->getRequest()->isXmlHttpRequest()) {
             $this->getResponse()->setHeaderOnly(true);
             $this->getResponse()->setStatusCode(401);
             return sfView::NONE;
         }
         if (!$user->hasAttribute('referer')) {
             $user->setAttribute('referer', $this->getRequest()->getUri());
         }
         $redirect_url = sfConfig::get('app_facebook_redirect_after_connect_url');
     } else {
         $this->getUser()->setFlash('error', 'Your account is not activated');
         $redirect_url = sfConfig::get('sf_login_module') . '/' . sfConfig::get('sf_login_action');
     }
     return $this->redirect($redirect_url);
 }