/**
  * go to login
  * 
  * @param int $a_auth_stat
  */
 protected static function goToLogin($a_auth_stat = "")
 {
     global $ilAuth;
     // close current session
     if ($a_auth_stat == AUTH_EXPIRED || $a_auth_stat == AUTH_IDLED) {
         ilSession::setClosingContext(ilSession::SESSION_CLOSE_EXPIRE);
     } else {
         ilSession::setClosingContext(ilSession::SESSION_CLOSE_LOGIN);
     }
     $ilAuth->logout();
     session_unset();
     session_destroy();
     $add = "";
     if ($_GET["soap_pw"] != "") {
         $add = "&soap_pw=" . $_GET["soap_pw"] . "&ext_uid=" . $_GET["ext_uid"];
     }
     $script = "login.php?target=" . $_GET["target"] . "&client_id=" . $_COOKIE["ilClientId"] . "&auth_stat=" . $a_auth_stat . $add;
     self::redirect($script, "init_error_authentication_fail", array("en" => "Authentication failed.", "de" => "Authentifizierung fehlgeschlagen."));
 }
 protected function deleteOwnAccountLogout()
 {
     global $ilAuth, $ilUser;
     // we are setting the flag and ending the session in the same step
     $ilUser->activateDeletionFlag();
     // see ilStartupGUI::showLogout()
     ilSession::setClosingContext(ilSession::SESSION_CLOSE_USER);
     $ilAuth->logout();
     session_destroy();
     ilUtil::redirect("login.php?target=usr_" . md5("usrdelown"));
 }
Example #3
0
 /**
  * show logout screen
  */
 function showLogout()
 {
     global $tpl, $ilSetting, $ilAuth, $lng, $ilIliasIniFile;
     ilSession::setClosingContext(ilSession::SESSION_CLOSE_USER);
     $ilAuth->logout();
     session_destroy();
     // reset cookie
     $client_id = $_COOKIE["ilClientId"];
     ilUtil::setCookie("ilClientId", "");
     //instantiate logout template
     self::initStartUpTemplate("tpl.logout.html");
     if ($ilSetting->get("pub_section")) {
         $tpl->setCurrentBlock("homelink");
         $tpl->setVariable("CLIENT_ID", "?client_id=" . $client_id . "&lang=" . $lng->getLangKey());
         $tpl->setVariable("TXT_HOME", $lng->txt("home"));
         $tpl->parseCurrentBlock();
     }
     if ($ilIliasIniFile->readVariable("clients", "list")) {
         $tpl->setCurrentBlock("client_list");
         $tpl->setVariable("TXT_CLIENT_LIST", $lng->txt("to_client_list"));
         $this->ctrl->setParameter($this, "client_id", $client_id);
         $tpl->setVariable("CMD_CLIENT_LIST", $this->ctrl->getLinkTarget($this, "showClientList"));
         $tpl->parseCurrentBlock();
         $this->ctrl->setParameter($this, "client_id", "");
     }
     $tpl->setVariable("TXT_PAGEHEADLINE", $lng->txt("logout"));
     $tpl->setVariable("TXT_LOGOUT_TEXT", $lng->txt("logout_text"));
     $tpl->setVariable("TXT_LOGIN", $lng->txt("login_to_ilias"));
     $tpl->setVariable("CLIENT_ID", "?client_id=" . $client_id . "&lang=" . $lng->getLangKey());
     $tpl->show();
 }
 /**
  * checks wether the current session exhaust the limit of sessions
  * when limit is reached it deletes "firstRequestAbidencer" and checks again
  * when limit is still reached it deletes "oneMinIdleSession" and checks again
  * when limit is still reached the current session will be logged out
  *
  * @global ilSetting $ilSetting
  * @global ilAppEventHandler $ilAppEventHandler
  * @param Auth $a_auth
  */
 private static function checkCurrentSessionIsAllowed(Auth $a_auth, $a_user_id)
 {
     global $ilSetting;
     $max_sessions = (int) $ilSetting->get('session_max_count', DEFAULT_MAX_COUNT);
     if ($max_sessions > 0) {
         // get total number of sessions
         $num_sessions = self::getExistingSessionCount(self::$session_types_controlled);
         self::debug(__METHOD__ . "--> total existing sessions (" . $num_sessions . ")");
         if ($num_sessions + 1 > $max_sessions) {
             self::debug(__METHOD__ . ' --> limit for session pool reached, but try kicking some first request abidencer');
             self::kickFirstRequestAbidencer(self::$session_types_controlled);
             // get total number of sessions again
             $num_sessions = self::getExistingSessionCount(self::$session_types_controlled);
             if ($num_sessions + 1 > $max_sessions) {
                 self::debug(__METHOD__ . ' --> limit for session pool still reached so try kick one min idle session');
                 self::kickOneMinIdleSession(self::$session_types_controlled);
                 // get total number of sessions again
                 $num_sessions = self::getExistingSessionCount(self::$session_types_controlled);
                 if ($num_sessions + 1 > $max_sessions) {
                     self::debug(__METHOD__ . ' --> limit for session pool still reached so logout session (' . session_id() . ') and trigger event');
                     ilSession::setClosingContext(ilSession::SESSION_CLOSE_LIMIT);
                     // as the session is opened and closed in one request, there
                     // is no proper session yet and we have to do this ourselves
                     ilSessionStatistics::createRawEntry(session_id(), $_SESSION['SessionType'], time(), $a_user_id);
                     $a_auth->logout();
                     // Trigger reachedSessionPoolLimit Event
                     global $ilAppEventHandler;
                     $ilAppEventHandler->raise('Services/Authentication', 'reachedSessionPoolLimit', array());
                     // auth won't do this, we need to close session properly
                     session_destroy();
                     ilUtil::redirect('login.php?reached_session_limit=true');
                 } else {
                     self::debug(__METHOD__ . ' --> limit of session pool not reached anymore after kicking one min idle session');
                 }
             } else {
                 self::debug(__METHOD__ . ' --> limit of session pool not reached anymore after kicking some first request abidencer');
             }
         } else {
             self::debug(__METHOD__ . ' --> limit for session pool not reached yet');
         }
     } else {
         self::debug(__METHOD__ . ' --> limit for session pool not set so check is bypassed');
     }
 }