user.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/prerequisites.inc.php';
  3. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/triggers.user.inc.php';
  4. /*
  5. / USER
  6. */
  7. // Protect route: user only
  8. protect_route(['user']);
  9. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/header.inc.php';
  10. $_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
  11. $username = $_SESSION['mailcow_cc_username'];
  12. $mailboxdata = mailbox('get', 'mailbox_details', $username);
  13. $pushover_data = pushover('get', $username);
  14. $tfa_data = get_tfa();
  15. $fido2_data = fido2(array("action" => "get_friendly_names"));
  16. $clientconfigstr = "host=" . urlencode($mailcow_hostname) . "&email=" . urlencode($username) . "&name=" . urlencode($mailboxdata['name']) . "&ui=" . urlencode(strtok($_SERVER['HTTP_HOST'], ':')) . "&port=" . urlencode($autodiscover_config['caldav']['port']);
  17. if ($autodiscover_config['useEASforOutlook'] == 'yes')
  18. $clientconfigstr .= "&outlookEAS=1";
  19. if (file_exists('thunderbird-plugins/version.csv')) {
  20. $fh = fopen('thunderbird-plugins/version.csv', 'r');
  21. if ($fh) {
  22. while (($row = fgetcsv($fh, 1000, ';')) !== FALSE) {
  23. if ($row[0] == '[email protected]') {
  24. $clientconfigstr .= "&connector=" . urlencode($row[1]);
  25. }
  26. }
  27. fclose($fh);
  28. }
  29. }
  30. // Get user information about aliases
  31. $user_get_alias_details = user_get_alias_details($username);
  32. $user_get_alias_details['direct_aliases'] = array_filter($user_get_alias_details['direct_aliases']);
  33. $user_get_alias_details['shared_aliases'] = array_filter($user_get_alias_details['shared_aliases']);
  34. $user_domains[] = mailbox('get', 'mailbox_details', $username)['domain'];
  35. $user_alias_domains = $user_get_alias_details['alias_domains'];
  36. if (!empty($user_alias_domains)) {
  37. $user_domains = array_merge($user_domains, $user_alias_domains);
  38. }
  39. // get number of app passwords
  40. $number_of_app_passwords = 0;
  41. foreach (app_passwd("get") as $app_password)
  42. {
  43. $app_password = app_passwd("details", $app_password['id']);
  44. if ($app_password['active'])
  45. {
  46. $number_of_app_passwords++;
  47. }
  48. }
  49. $template = 'user.twig';
  50. $template_data = [
  51. 'acl' => $_SESSION['acl'],
  52. 'acl_json' => json_encode($_SESSION['acl']),
  53. 'user_spam_score' => mailbox('get', 'spam_score', $username),
  54. 'tfa_data' => $tfa_data,
  55. 'tfa_id' => @$_SESSION['tfa_id'],
  56. 'fido2_data' => $fido2_data,
  57. 'mailboxdata' => $mailboxdata,
  58. 'clientconfigstr' => $clientconfigstr,
  59. 'user_get_alias_details' => $user_get_alias_details,
  60. 'get_tagging_options' => mailbox('get', 'delimiter_action', $username),
  61. 'get_tls_policy' => mailbox('get', 'tls_policy', $username),
  62. 'quarantine_notification' => mailbox('get', 'quarantine_notification', $username),
  63. 'quarantine_category' => mailbox('get', 'quarantine_category', $username),
  64. 'user_domains' => $user_domains,
  65. 'pushover_data' => $pushover_data,
  66. 'lang_user' => json_encode($lang['user']),
  67. 'number_of_app_passwords' => $number_of_app_passwords,
  68. 'lang_datatables' => json_encode($lang['datatables']),
  69. ];
  70. $js_minifier->add('/web/js/site/user.js');
  71. $js_minifier->add('/web/js/site/pwgen.js');
  72. require_once $_SERVER['DOCUMENT_ROOT'] . '/inc/footer.inc.php';