public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Trace
data/web/inc/triggers.domainadmin.inc.php
Trace helps you understand code history line by line. See who changed each line, when it changed, and which commit introduced it.
Author
Date
Commit
Line
Code
1
<?php
2
// SSO Domain Admin
3
if (!empty($_GET['sso_token'])) {
4
$username = domain_admin_sso('check', $_GET['sso_token']);
6
if ($username !== false) {
7
session_regenerate_id(true);
8
$_SESSION['mailcow_cc_username'] = $username;
9
$_SESSION['mailcow_cc_role'] = 'domainadmin';
10
header('Location: /domainadmin/mailbox');
11
}
12
}
14
if (isset($_POST["verify_tfa_login"])) {
15
if (verify_tfa_login($_SESSION['pending_mailcow_cc_username'], $_POST)) {
16
if ($_SESSION['pending_mailcow_cc_role'] == "domainadmin") {
17
$_SESSION['mailcow_cc_username'] = $_SESSION['pending_mailcow_cc_username'];
18
$_SESSION['mailcow_cc_role'] = "domainadmin";
19
unset($_SESSION['pending_mailcow_cc_username']);
20
unset($_SESSION['pending_mailcow_cc_role']);
21
unset($_SESSION['pending_tfa_methods']);
23
// If pending actions exist, redirect to /domainadmin to show modal
24
if (!empty($_SESSION['pending_tfa_setup']) || !empty($_SESSION['pending_pw_update'])) {
25
header("Location: /domainadmin");
26
die();
27
}
28
header("Location: /domainadmin/mailbox");
29
die();
30
}
31
}
33
unset($_SESSION['pending_mailcow_cc_username']);
34
unset($_SESSION['pending_mailcow_cc_role']);
35
unset($_SESSION['pending_tfa_methods']);
36
}
37
if (isset($_POST["verify_fido2_login"])) {
38
$res = fido2(array(
39
"action" => "verify",
40
"token" => $_POST["token"],
41
"user" => "domainadmin"
42
));
43
if (is_array($res) && $res['role'] == "domainadmin" && !empty($res['username'])){
44
$_SESSION["mailcow_cc_username"] = $res['username'];
45
$_SESSION["mailcow_cc_role"] = $res['role'];
46
$_SESSION["fido2_cid"] = $res['cid'];
47
}
48
exit;
49
}
51
if (isset($_GET["cancel_tfa_login"])) {
52
unset($_SESSION['pending_pw_reset_token']);
53
unset($_SESSION['pending_pw_new_password']);
54
unset($_SESSION['pending_mailcow_cc_username']);
55
unset($_SESSION['pending_mailcow_cc_role']);
56
unset($_SESSION['pending_tfa_methods']);
58
header("Location: /domainadmin");
59
}
61
if (isset($_GET["cancel_tfa_setup"])) {
62
session_regenerate_id(true);
63
session_unset();
64
session_destroy();
65
session_write_close();
66
header("Location: /domainadmin");
67
exit();
68
}
70
if (isset($_POST["login_user"]) && isset($_POST["pass_user"])) {
71
$login_user = strtolower(trim($_POST["login_user"]));
72
$as = check_login($login_user, $_POST["pass_user"], array("role" => "domain_admin", "service" => "MAILCOWUI"));
74
if ($as == "domainadmin") {
75
session_regenerate_id(true);
76
$_SESSION['mailcow_cc_username'] = $login_user;
77
$_SESSION['mailcow_cc_role'] = "domainadmin";
78
// If pending actions exist, redirect to /domainadmin to show modal
79
if (!empty($_SESSION['pending_tfa_setup']) || !empty($_SESSION['pending_pw_update'])) {
80
header("Location: /domainadmin");
81
die();
82
}
83
header("Location: /domainadmin/mailbox");
84
die();
85
}
86
elseif ($as != "pending") {
87
unset($_SESSION['pending_mailcow_cc_username']);
88
unset($_SESSION['pending_mailcow_cc_role']);
89
unset($_SESSION['pending_tfa_methods']);
90
unset($_SESSION['mailcow_cc_username']);
91
unset($_SESSION['mailcow_cc_role']);
92
}
93
}
94
?>