triggers.domainadmin.inc.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. // SSO Domain Admin
  3. if (!empty($_GET['sso_token'])) {
  4. $username = domain_admin_sso('check', $_GET['sso_token']);
  5. if ($username !== false) {
  6. session_regenerate_id(true);
  7. $_SESSION['mailcow_cc_username'] = $username;
  8. $_SESSION['mailcow_cc_role'] = 'domainadmin';
  9. // Update User-Agent after session regeneration to prevent validation errors
  10. $_SESSION['SESS_REMOTE_UA'] = $_SERVER['HTTP_USER_AGENT'];
  11. header('Location: /domainadmin/mailbox');
  12. }
  13. }
  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']);
  22. header("Location: /domainadmin/mailbox");
  23. die();
  24. }
  25. }
  26. unset($_SESSION['pending_mailcow_cc_username']);
  27. unset($_SESSION['pending_mailcow_cc_role']);
  28. unset($_SESSION['pending_tfa_methods']);
  29. }
  30. if (isset($_POST["verify_fido2_login"])) {
  31. $res = fido2(array(
  32. "action" => "verify",
  33. "token" => $_POST["token"],
  34. "user" => "domainadmin"
  35. ));
  36. if (is_array($res) && $res['role'] == "domainadmin" && !empty($res['username'])){
  37. $_SESSION["mailcow_cc_username"] = $res['username'];
  38. $_SESSION["mailcow_cc_role"] = $res['role'];
  39. $_SESSION["fido2_cid"] = $res['cid'];
  40. }
  41. exit;
  42. }
  43. if (isset($_GET["cancel_tfa_login"])) {
  44. unset($_SESSION['pending_pw_reset_token']);
  45. unset($_SESSION['pending_pw_new_password']);
  46. unset($_SESSION['pending_mailcow_cc_username']);
  47. unset($_SESSION['pending_mailcow_cc_role']);
  48. unset($_SESSION['pending_tfa_methods']);
  49. header("Location: /domainadmin");
  50. }
  51. if (isset($_POST["login_user"]) && isset($_POST["pass_user"])) {
  52. $login_user = strtolower(trim($_POST["login_user"]));
  53. $as = check_login($login_user, $_POST["pass_user"], false, array("role" => "domain_admin"));
  54. if ($as == "domainadmin") {
  55. session_regenerate_id(true);
  56. $_SESSION['mailcow_cc_username'] = $login_user;
  57. $_SESSION['mailcow_cc_role'] = "domainadmin";
  58. // Update User-Agent after session regeneration to prevent validation errors
  59. $_SESSION['SESS_REMOTE_UA'] = $_SERVER['HTTP_USER_AGENT'];
  60. header("Location: /domainadmin/mailbox");
  61. die();
  62. }
  63. elseif ($as != "pending") {
  64. unset($_SESSION['pending_mailcow_cc_username']);
  65. unset($_SESSION['pending_mailcow_cc_role']);
  66. unset($_SESSION['pending_tfa_methods']);
  67. unset($_SESSION['mailcow_cc_username']);
  68. unset($_SESSION['mailcow_cc_role']);
  69. }
  70. }
  71. ?>