Frontend\Modules\Profiles\Engine\Authentication::isLoggedIn PHP Method

isLoggedIn() public static method

Check if a profile is logged in.
public static isLoggedIn ( ) : boolean
return boolean
    public static function isLoggedIn()
    {
        // profile object exist? (this means the session/cookie checks have
        // already happened in the current request and we cached the profile)
        if (isset(self::$profile)) {
            return true;
        } elseif (\SpoonSession::exists('frontend_profile_logged_in') && \SpoonSession::get('frontend_profile_logged_in') === true) {
            // get session id
            $sessionId = \SpoonSession::getSessionId();
            // get profile id
            $profileId = (int) FrontendModel::getContainer()->get('database')->getVar('SELECT p.id
                 FROM profiles AS p
                 INNER JOIN profiles_sessions AS ps ON ps.profile_id = p.id
                 WHERE ps.session_id = ?', (string) $sessionId);
            // valid profile id
            if ($profileId !== 0) {
                // update session date
                FrontendModel::getContainer()->get('database')->update('profiles_sessions', array('date' => FrontendModel::getUTCDate()), 'session_id = ?', $sessionId);
                // new user object
                self::$profile = new FrontendProfilesProfile($profileId);
                // logged in
                return true;
            } else {
                // invalid session
                \SpoonSession::set('frontend_profile_logged_in', false);
            }
        } elseif (CommonCookie::exists('frontend_profile_secret_key') && CommonCookie::get('frontend_profile_secret_key') != '') {
            // secret
            $secret = (string) CommonCookie::get('frontend_profile_secret_key');
            // get profile id
            $profileId = (int) FrontendModel::getContainer()->get('database')->getVar('SELECT p.id
                 FROM profiles AS p
                 INNER JOIN profiles_sessions AS ps ON ps.profile_id = p.id
                 WHERE ps.secret_key = ?', $secret);
            // valid profile id
            if ($profileId !== 0) {
                // get new secret key
                $profileSecret = FrontendProfilesModel::getEncryptedString(\SpoonSession::getSessionId(), FrontendProfilesModel::getRandomString());
                // update session record
                FrontendModel::getContainer()->get('database')->update('profiles_sessions', array('session_id' => \SpoonSession::getSessionId(), 'secret_key' => $profileSecret, 'date' => FrontendModel::getUTCDate()), 'secret_key = ?', $secret);
                // set new cookie
                CommonCookie::set('frontend_profile_secret_key', $profileSecret);
                // set is_logged_in to true
                \SpoonSession::set('frontend_profile_logged_in', true);
                // update last login
                FrontendProfilesModel::update($profileId, array('last_login' => FrontendModel::getUTCDate()));
                // new user object
                self::$profile = new FrontendProfilesProfile($profileId);
                // logged in
                return true;
            } else {
                // invalid cookie
                CommonCookie::delete('frontend_profile_secret_key');
            }
        }
        // no one is logged in
        return false;
    }

Usage Example

示例#1
0
 /**
  * Parse
  */
 private function parse()
 {
     $this->tpl->assign('isLoggedIn', FrontendProfilesAuthentication::isLoggedIn());
     if (FrontendProfilesAuthentication::isLoggedIn()) {
         $profile = FrontendProfilesAuthentication::getProfile();
         $this->tpl->assign('profile', $profile->toArray());
     }
 }
All Usage Examples Of Frontend\Modules\Profiles\Engine\Authentication::isLoggedIn