Example #1
0
 /**
  * @param    array  $params   plugin parameters for the current action
  * @return null or jSelectorAct  if action should change
  */
 public function beforeAction($params)
 {
     $notLogged = false;
     $badip = false;
     $selector = null;
     // Check if auth cookie exist and user isn't logged on
     if (isset($this->config['persistant_enable']) && $this->config['persistant_enable'] && !jAuth::isConnected()) {
         if (isset($this->config['persistant_cookie_name']) && isset($this->config['persistant_crypt_key'])) {
             $cookieName = $this->config['persistant_cookie_name'];
             if (isset($_COOKIE[$cookieName]['auth']) && strlen($_COOKIE[$cookieName]['auth']) > 0) {
                 $decrypted = jCrypt::decrypt($_COOKIE[$cookieName]['auth'], $this->config['persistant_crypt_key']);
                 $decrypted = @unserialize($decrypted);
                 if ($decrypted && is_array($decrypted)) {
                     list($login, $password) = $decrypted;
                     jAuth::login($login, $password);
                 }
             }
             if (isset($_COOKIE[$cookieName]['login'])) {
                 // destroy deprecated cookies
                 setcookie($cookieName . '[login]', '', time() - 3600, $this->config['persistant_cookie_path']);
                 setcookie($cookieName . '[passwd]', '', time() - 3600, $this->config['persistant_cookie_path']);
             }
         } else {
             throw new jException('jelix~auth.error.persistant.incorrectconfig', 'persistant_cookie_name, persistant_crypt_key');
         }
     }
     //Do we check the ip ?
     if ($this->config['secure_with_ip']) {
         if (!isset($_SESSION['JELIX_AUTH_SECURE_WITH_IP'])) {
             $_SESSION['JELIX_AUTH_SECURE_WITH_IP'] = $this->_getIpForSecure();
         } else {
             if ($_SESSION['JELIX_AUTH_SECURE_WITH_IP'] != $this->_getIpForSecure()) {
                 session_destroy();
                 $selector = new jSelectorAct($this->config['bad_ip_action']);
                 $notLogged = true;
                 $badip = true;
             }
         }
     }
     //Creating the user's object if needed
     if (!isset($_SESSION[$this->config['session_name']])) {
         $notLogged = true;
         $_SESSION[$this->config['session_name']] = new jAuthDummyUser();
     } else {
         $notLogged = !jAuth::isConnected();
     }
     if (!$notLogged && $this->config['timeout']) {
         if (isset($_SESSION['JELIX_AUTH_LASTTIME'])) {
             if (time() - $_SESSION['JELIX_AUTH_LASTTIME'] > $this->config['timeout'] * 60) {
                 $notLogged = true;
                 jAuth::logout();
                 unset($_SESSION['JELIX_AUTH_LASTTIME']);
             } else {
                 $_SESSION['JELIX_AUTH_LASTTIME'] = time();
             }
         } else {
             $_SESSION['JELIX_AUTH_LASTTIME'] = time();
         }
     }
     $needAuth = isset($params['auth.required']) ? $params['auth.required'] == true : $this->config['auth_required'];
     $authok = false;
     if ($needAuth) {
         if ($notLogged) {
             if ($this->config['on_error'] == 1 || !jApp::coord()->request->isAllowedResponse('jResponseRedirect')) {
                 throw new jException($this->config['error_message']);
             } else {
                 if (!$badip) {
                     $auth_url_return = jApp::coord()->request->getParam('auth_url_return');
                     if ($auth_url_return === null) {
                         jApp::coord()->request->params['auth_url_return'] = jUrl::getCurrentUrl();
                     }
                     $selector = new jSelectorAct($this->config['on_error_action']);
                 }
             }
         } else {
             $authok = true;
         }
     } else {
         $authok = true;
     }
     return $selector;
 }
 /**
  *
  */
 public static function checkCookieToken()
 {
     $config = self::loadConfig();
     if (isset($config['persistant_enable']) && $config['persistant_enable'] && !self::isConnected()) {
         if (isset($config['persistant_cookie_name']) && isset($config['persistant_crypt_key']) && trim($config['persistant_cookie_name']) != '' && trim($config['persistant_crypt_key']) != '') {
             $cookieName = $config['persistant_cookie_name'];
             if (isset($_COOKIE[$cookieName]['auth']) && strlen($_COOKIE[$cookieName]['auth']) > 0) {
                 $decrypted = jCrypt::decrypt($_COOKIE[$cookieName]['auth'], $config['persistant_crypt_key']);
                 $decrypted = @unserialize($decrypted);
                 if ($decrypted && is_array($decrypted) && count($decrypted) == 2) {
                     list($login, $password) = $decrypted;
                     self::login($login, $password, true);
                 }
             }
             if (isset($_COOKIE[$cookieName]['login'])) {
                 // destroy deprecated cookies
                 setcookie($cookieName . '[login]', '', time() - 3600, $config['persistant_cookie_path']);
                 setcookie($cookieName . '[passwd]', '', time() - 3600, $config['persistant_cookie_path']);
             }
         }
     }
 }
 /**
  *
  */
 public static function checkCookieToken()
 {
     $config = self::loadConfig();
     if (isset($config['persistant_enable']) && $config['persistant_enable'] && !self::isConnected()) {
         if (isset($config['persistant_cookie_name']) && isset($config['persistant_crypt_key'])) {
             $cookieName = $config['persistant_cookie_name'];
             if (isset($_COOKIE[$cookieName]['auth']) && strlen($_COOKIE[$cookieName]['auth']) > 0) {
                 $decrypted = jCrypt::decrypt($_COOKIE[$cookieName]['auth'], $config['persistant_crypt_key']);
                 $decrypted = @unserialize($decrypted);
                 if ($decrypted && is_array($decrypted)) {
                     list($login, $password) = $decrypted;
                     self::login($login, $password, true);
                 }
             }
             if (isset($_COOKIE[$cookieName]['login'])) {
                 // destroy deprecated cookies
                 setcookie($cookieName . '[login]', '', time() - 3600, $config['persistant_cookie_path']);
                 setcookie($cookieName . '[passwd]', '', time() - 3600, $config['persistant_cookie_path']);
             }
         } else {
             throw new jException('jelix~auth.error.persistant.incorrectconfig', 'persistant_cookie_name, persistant_crypt_key');
         }
     }
 }