Ejemplo n.º 1
0
 /**
  * Initialize basic authentication
  *
  * Try to get user from cookie or session
  *
  * @param array $params
  * @throws InvalidParamError
  * @return User|null
  */
 function initialize($params)
 {
     $this->secret_key = array_var($params, 'secret_key');
     if (empty($this->secret_key)) {
         throw new InvalidParamError('params', $params, 'params[secret_key] value is required');
     }
     // if
     $this->session_id_var_name = array_var($params, 'sid_prefix') . '_sid_' . substr($this->secret_key, 0, 10);
     DB::execute('DELETE FROM ' . TABLE_PREFIX . 'user_sessions WHERE expires_on < ?', date(DATETIME_MYSQL));
     // Expire old sessions
     $cookie_session_id = Cookies::getVariable($this->session_id_var_name);
     $settings = array('remember' => false, 'new_visit' => false);
     if ($cookie_session_id && strpos($cookie_session_id, '/') !== false) {
         list($session_id, $session_key, $session_time) = explode('/', $cookie_session_id);
         if (time() - USER_SESSION_LIFETIME > strtotime($session_time)) {
             $settings['new_visit'] = true;
         }
         // if
         $user = Users::findBySessionId($session_id, $session_key);
         if ($user instanceof User && $user->isActive()) {
             if (is_array($settings)) {
                 $settings['existing_session_id'] = $session_id;
             } else {
                 $settings = array('existing_session_id' => $session_id);
             }
             // if
             $this->logUserIn($user, $settings);
         }
         // if
     }
     // if
 }