triggers.domainadmin.inc.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. header('Location: /domainadmin/mailbox');
  10. }
  11. }
  12. if (isset($_POST["verify_tfa_login"])) {
  13. if (verify_tfa_login($_SESSION['pending_mailcow_cc_username'], $_POST)) {
  14. if ($_SESSION['pending_mailcow_cc_role'] == "domainadmin") {
  15. $_SESSION['mailcow_cc_username'] = $_SESSION['pending_mailcow_cc_username'];
  16. $_SESSION['mailcow_cc_role'] = "domainadmin";
  17. unset($_SESSION['pending_mailcow_cc_username']);
  18. unset($_SESSION['pending_mailcow_cc_role']);
  19. unset($_SESSION['pending_tfa_methods']);
  20. // If pending actions exist, redirect to /domainadmin to show modal
  21. if (!empty($_SESSION['pending_tfa_setup']) || !empty($_SESSION['pending_pw_update'])) {
  22. header("Location: /domainadmin");
  23. die();
  24. }
  25. header("Location: /domainadmin/mailbox");
  26. die();
  27. }
  28. }
  29. unset($_SESSION['pending_mailcow_cc_username']);
  30. unset($_SESSION['pending_mailcow_cc_role']);
  31. unset($_SESSION['pending_tfa_methods']);
  32. }
  33. if (isset($_POST["verify_fido2_login"])) {
  34. $res = fido2(array(
  35. "action" => "verify",
  36. "token" => $_POST["token"],
  37. "user" => "domainadmin"
  38. ));
  39. if (is_array($res) && $res['role'] == "domainadmin" && !empty($res['username'])){
  40. $_SESSION["mailcow_cc_username"] = $res['username'];
  41. $_SESSION["mailcow_cc_role"] = $res['role'];
  42. $_SESSION["fido2_cid"] = $res['cid'];
  43. }
  44. exit;
  45. }
  46. if (isset($_GET["cancel_tfa_login"])) {
  47. unset($_SESSION['pending_pw_reset_token']);
  48. unset($_SESSION['pending_pw_new_password']);
  49. unset($_SESSION['pending_mailcow_cc_username']);
  50. unset($_SESSION['pending_mailcow_cc_role']);
  51. unset($_SESSION['pending_tfa_methods']);
  52. header("Location: /domainadmin");
  53. }
  54. if (isset($_GET["cancel_tfa_setup"])) {
  55. session_regenerate_id(true);
  56. session_unset();
  57. session_destroy();
  58. session_write_close();
  59. header("Location: /domainadmin");
  60. exit();
  61. }
  62. if (isset($_POST["login_user"]) && isset($_POST["pass_user"])) {
  63. $login_user = strtolower(trim($_POST["login_user"]));
  64. $as = check_login($login_user, $_POST["pass_user"], array("role" => "domain_admin", "service" => "MAILCOWUI"));
  65. if ($as == "domainadmin") {
  66. session_regenerate_id(true);
  67. $_SESSION['mailcow_cc_username'] = $login_user;
  68. $_SESSION['mailcow_cc_role'] = "domainadmin";
  69. // If pending actions exist, redirect to /domainadmin to show modal
  70. if (!empty($_SESSION['pending_tfa_setup']) || !empty($_SESSION['pending_pw_update'])) {
  71. header("Location: /domainadmin");
  72. die();
  73. }
  74. header("Location: /domainadmin/mailbox");
  75. die();
  76. }
  77. elseif ($as != "pending") {
  78. unset($_SESSION['pending_mailcow_cc_username']);
  79. unset($_SESSION['pending_mailcow_cc_role']);
  80. unset($_SESSION['pending_tfa_methods']);
  81. unset($_SESSION['mailcow_cc_username']);
  82. unset($_SESSION['mailcow_cc_role']);
  83. }
  84. }
  85. ?>