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
 
2626dd47
 if ($_SERVER['HTTPS']) {
     session_set_cookie_params(0, '/', '', true, true);
 }
3dd67d84
 
2626dd47
 if (!session_start()) {
     logger(LOG_ERR, "session/start", "session", "Die session konnte nicht gestartet werden!");
     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'])) {
2626dd47
     require_once('modules/webmailtotp/include/totp.php');
     $role = null;
     if (check_totp($_SESSION['totp_username'], $_POST['webinterface_totpcode'])) {
         $role = find_role($_SESSION['totp_username'], '', true);
     }
     if ($role === null) {
         $_SESSION['role'] = ROLE_ANONYMOUS;
         logger(LOG_WARNING, "session/start", "login", "wrong totp code (username: »{$_SESSION['totp_username']}«)");
         warning('Ihre Anmeldung konnte nicht durchgeführt werden. Geben Sie bitte einen neuen Code ein.');
         show_page('webmailtotp-login');
         die();
     } else {
         setup_session($role, $_SESSION['totp_username']);
     }
     unset($_POST['webinterface_totpcode']);
     unset($_SESSION['totp']);
     unset($_SESSION['totp_username']);
b07839f3
 }
 
2626dd47
 if (isset($_POST['webinterface_username']) && isset($_POST['webinterface_password'])) {
     $role = find_role($_POST['webinterface_username'], $_POST['webinterface_password']);
     if ($role === null) {
         $_SESSION['role'] = ROLE_ANONYMOUS;
         logger(LOG_WARNING, "session/start", "login", "wrong user data (username: »{$_POST['webinterface_username']}«)");
         login_screen('Ihre Anmeldung konnte nicht durchgeführt werden. Vermutlich haben Sie falsche Zugangsdaten eingegeben.');
     } else {
         setup_session($role, $_POST['webinterface_username']);
af1528ae
         if (isset($_POST['webinterface_password'])) {
             $result = strong_password($_POST['webinterface_password']);
             if ($result !== true) {
829dfc06
                 logger(LOG_WARNING, "session/start", "login", "weak password detected for ".$_POST['webinterface_username']);
af1528ae
                 warning('Unsere Überprüfung hat ergeben, dass Ihr Passwort in bisher veröffentlichten Passwortlisten enthalten ist, es ist daher als unsicher zu betrachten. Bitte ändern Sie Ihr Passwort bei Gelegenheit.');
                 if ($role & (ROLE_VMAIL_ACCOUNT | ROLE_MAILACCOUNT)) {
                     redirect($prefix.'go/email/chpass');
                 } else {
                     redirect($prefix.'go/index/chpass');
                 }
             }
         }
2626dd47
     }
     unset($_POST['webinterface_username']);
     unset($_POST['webinterface_password']);
 } elseif (isset($_SESSION['role'])) {
     /* User ist eingeloggt (aber vielleicht als ROLE_ANONYMOUS!) */
 } else {
defbfa55
     $_SESSION['role'] = ROLE_ANONYMOUS;
 }
 // Wenn wir hier sind, ist der Benutzer eingeloggt. Möglicherweise nur als ANONYMOUS
 
deedc3e3
 
 DEBUG("Role: ".$_SESSION['role']);