session/start.php
defbfa55
 <?php
 /*
 
   Session-Start-Script wird vom dispatcher eingebunden
 
 */
 
 require_once('session/checkuser.php');
 require_once('inc/error.php');
 require_once('inc/debug.php');
 
fb92f399
 require_once('inc/base.php');
 
810f56cc
 session_name(config('session_name'));
2e004ad3
 
3dd67d84
 if ($_SERVER['HTTPS']) session_set_cookie_params( 0, '/', '', true, true );
 
defbfa55
 if (!session_start())
fb92f399
 {
3048f62f
         logger(LOG_ERR, "session/start", "session", "Die session konnte nicht gestartet werden!");
defbfa55
         system_failure('Die Sitzung konnte nicht gestartet werden, bitte benachrichtigen Sie den Administrator!');
fb92f399
 }
defbfa55
 
9098cfc5
 DEBUG("<pre>POST-DATA: ".htmlspecialchars(print_r($_POST, true))."\nSESSION_DATA: ".htmlspecialchars(print_r($_SESSION, true))."</pre>");
defbfa55
 
00532760
 if (have_module('webmailtotp') && isset($_POST['webinterface_totpcode']) && isset($_SESSION['totp']) && isset($_SESSION['totp_username'])) {
   require_once('modules/webmailtotp/include/totp.php');
b07839f3
   $role = NULL;
00532760
   if (check_totp($_SESSION['totp_username'], $_POST['webinterface_totpcode'])) {
     $role = find_role($_SESSION['totp_username'], '', true);
b07839f3
   }
   if ($role === NULL)
   {
     $_SESSION['role'] = ROLE_ANONYMOUS;
00532760
     logger(LOG_WARNING, "session/start", "login", "wrong totp code (username: »{$_SESSION['totp_username']}«)");
b07839f3
     warning('Ihre Anmeldung konnte nicht durchgeführt werden. Geben Sie bitte einen neuen Code ein.');
00532760
     show_page('webmailtotp-login');
b07839f3
     die();
   }
   else
   {
00532760
     setup_session($role, $_SESSION['totp_username']);
b07839f3
   }
00532760
   unset($_POST['webinterface_totpcode']);
   unset($_SESSION['totp']);
   unset($_SESSION['totp_username']);
b07839f3
 }
 
4c7e58dd
 if (isset($_POST['webinterface_username']) && isset($_POST['webinterface_password']))
defbfa55
 {
4c7e58dd
   $role = find_role($_POST['webinterface_username'], $_POST['webinterface_password']);
defbfa55
   if ($role === NULL)
   {
     $_SESSION['role'] = ROLE_ANONYMOUS;
a95ec07a
     logger(LOG_WARNING, "session/start", "login", "wrong user data (username: »{$_POST['webinterface_username']}«)");
defbfa55
     login_screen('Ihre Anmeldung konnte nicht durchgeführt werden. Vermutlich haben Sie falsche Zugangsdaten eingegeben.');
   }
   else
   {
4c7e58dd
     setup_session($role, $_POST['webinterface_username']);
defbfa55
   }
4c7e58dd
   unset($_POST['webinterface_username']);
   unset($_POST['webinterface_password']);
defbfa55
 }
 
 elseif (isset($_SESSION['role']))
 {
   /* User ist eingeloggt (aber vielleicht als ROLE_ANONYMOUS!) */
 }
 
 else
 {
   $_SESSION['role'] = ROLE_ANONYMOUS;
 }
 // Wenn wir hier sind, ist der Benutzer eingeloggt. Möglicherweise nur als ANONYMOUS
 
deedc3e3
 
 DEBUG("Role: ".$_SESSION['role']);
 
defbfa55
 ?>