/** * 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 }