admin.inc.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. function get_admin_details() {
  3. // No parameter to be given, only one admin should exist
  4. global $pdo;
  5. global $lang;
  6. $data = array();
  7. if ($_SESSION['mailcow_cc_role'] != 'admin') {
  8. $_SESSION['return'] = array(
  9. 'type' => 'danger',
  10. 'msg' => sprintf($lang['danger']['access_denied'])
  11. );
  12. return false;
  13. }
  14. try {
  15. $stmt = $pdo->prepare("SELECT `username`, `modified`, `created` FROM `admin`WHERE `superadmin`='1' AND active='1'");
  16. $stmt->execute();
  17. $data = $stmt->fetch(PDO::FETCH_ASSOC);
  18. }
  19. catch(PDOException $e) {
  20. $_SESSION['return'] = array(
  21. 'type' => 'danger',
  22. 'msg' => 'MySQL: '.$e
  23. );
  24. }
  25. return $data;
  26. }
  27. function edit_admin($postarray) {
  28. global $lang;
  29. global $pdo;
  30. $username = $postarray['username'];
  31. $password = $postarray['password'];
  32. $password2 = $postarray['password2'];
  33. isset($postarray['active']) ? $active = '1' : $active = '0';
  34. if ($_SESSION['mailcow_cc_role'] != "admin") {
  35. $_SESSION['return'] = array(
  36. 'type' => 'danger',
  37. 'msg' => sprintf($lang['danger']['access_denied'])
  38. );
  39. return false;
  40. }
  41. if(isset($postarray['domain'])) {
  42. foreach ($postarray['domain'] as $domain) {
  43. if (!is_valid_domain_name($domain)) {
  44. $_SESSION['return'] = array(
  45. 'type' => 'danger',
  46. 'msg' => sprintf($lang['danger']['domain_invalid'])
  47. );
  48. return false;
  49. }
  50. }
  51. }
  52. if (!ctype_alnum(str_replace(array('_', '.', '-'), '', $username))) {
  53. $_SESSION['return'] = array(
  54. 'type' => 'danger',
  55. 'msg' => sprintf($lang['danger']['username_invalid'])
  56. );
  57. return false;
  58. }
  59. try {
  60. $stmt = $pdo->prepare("DELETE FROM `domain_admins` WHERE `username` = :username");
  61. $stmt->execute(array(
  62. ':username' => $username,
  63. ));
  64. }
  65. catch (PDOException $e) {
  66. $_SESSION['return'] = array(
  67. 'type' => 'danger',
  68. 'msg' => 'MySQL: '.$e
  69. );
  70. return false;
  71. }
  72. if(isset($postarray['domain'])) {
  73. foreach ($postarray['domain'] as $domain) {
  74. try {
  75. $stmt = $pdo->prepare("INSERT INTO `domain_admins` (`username`, `domain`, `created`, `active`)
  76. VALUES (:username, :domain, :created, :active)");
  77. $stmt->execute(array(
  78. ':username' => $username,
  79. ':domain' => $domain,
  80. ':created' => date('Y-m-d H:i:s'),
  81. ':active' => $active
  82. ));
  83. }
  84. catch (PDOException $e) {
  85. $_SESSION['return'] = array(
  86. 'type' => 'danger',
  87. 'msg' => 'MySQL: '.$e
  88. );
  89. return false;
  90. }
  91. }
  92. }
  93. if (!empty($password) && !empty($password2)) {
  94. if ($password != $password2) {
  95. $_SESSION['return'] = array(
  96. 'type' => 'danger',
  97. 'msg' => sprintf($lang['danger']['password_mismatch'])
  98. );
  99. return false;
  100. }
  101. $password_hashed = hash_password($password);
  102. try {
  103. $stmt = $pdo->prepare("UPDATE `admin` SET `modified` = :modified, `active` = :active, `password` = :password_hashed WHERE `username` = :username");
  104. $stmt->execute(array(
  105. ':password_hashed' => $password_hashed,
  106. ':username' => $username,
  107. ':modified' => date('Y-m-d H:i:s'),
  108. ':active' => $active
  109. ));
  110. }
  111. catch (PDOException $e) {
  112. $_SESSION['return'] = array(
  113. 'type' => 'danger',
  114. 'msg' => 'MySQL: '.$e
  115. );
  116. return false;
  117. }
  118. }
  119. else {
  120. try {
  121. $stmt = $pdo->prepare("UPDATE `admin` SET `modified` = :modified, `active` = :active WHERE `username` = :username");
  122. $stmt->execute(array(
  123. ':username' => $username,
  124. ':modified' => date('Y-m-d H:i:s'),
  125. ':active' => $active
  126. ));
  127. }
  128. catch (PDOException $e) {
  129. $_SESSION['return'] = array(
  130. 'type' => 'danger',
  131. 'msg' => 'MySQL: '.$e
  132. );
  133. return false;
  134. }
  135. }
  136. $_SESSION['return'] = array(
  137. 'type' => 'success',
  138. 'msg' => sprintf($lang['success']['domain_admin_modified'], htmlspecialchars($username))
  139. );
  140. }