1
0

auth_apply.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. require_once($_SERVER['DOCUMENT_ROOT'] . "/inc/auth.php");
  3. require_once($_SERVER['DOCUMENT_ROOT'] . "/inc/languages/" . HTML_LANG . ".php");
  4. if (!defined("CONFIG")) die("Not defined");
  5. $page_url = null;
  6. $all_ok = true;
  7. if (getPOST("ApplyForAll", $page_url)) {
  8. // Получаем массив ID авторизаций
  9. $auth_id = getPOST("fid", $page_url, []);
  10. // Получаем и валидируем все параметры через getPOST
  11. $a_ou_id = (int)getPOST("a_new_ou", $page_url, 0);
  12. $a_enabled = (int)getPOST("a_enabled", $page_url, 0);
  13. $a_dhcp = (int)getPOST("a_dhcp", $page_url, 0);
  14. $a_dhcp_acl = trim(getPOST("a_dhcp_acl", $page_url, ''));
  15. $a_dhcp_option_set = trim(getPOST("a_dhcp_option_set", $page_url, ''));
  16. $a_queue = (int)getPOST("a_queue_id", $page_url, 0);
  17. $a_group = (int)getPOST("a_group_id", $page_url, 0);
  18. $a_traf = (int)getPOST("a_traf", $page_url, 0);
  19. $a_bind_mac = (int)getPOST("a_bind_mac", $page_url, 0);
  20. $a_bind_ip = (int)getPOST("a_bind_ip", $page_url, 0);
  21. $n_enabled = (int)getPOST("n_enabled", $page_url, 0);
  22. $n_link = (int)getPOST("n_link", $page_url, 0);
  23. $n_handler = getPOST("n_handler", $page_url, '');
  24. foreach ($auth_id as $val) {
  25. $id = (int)$val;
  26. if ($id <= 0) continue;
  27. // Получаем текущую авторизацию и пользователя
  28. $cur_auth = get_record_sql($db_link, "SELECT * FROM user_auth WHERE id = ?", [$id]);
  29. if (!$cur_auth) continue;
  30. $user_info = get_record_sql($db_link, "SELECT * FROM user_list WHERE id = ?", [(int)$cur_auth["user_id"]]);
  31. if (!$user_info) continue;
  32. // Формируем данные для обновления auth
  33. $auth_updates = [];
  34. if (getPOST("e_enabled", $page_url) !== null) {
  35. $auth_updates['enabled'] = (int)($user_info["enabled"] * $a_enabled);
  36. }
  37. if (getPOST("e_group_id", $page_url) !== null) {
  38. $auth_updates['filter_group_id'] = $a_group;
  39. }
  40. if (getPOST("e_queue_id", $page_url) !== null) {
  41. $auth_updates['queue_id'] = $a_queue;
  42. }
  43. if (getPOST("e_dhcp", $page_url) !== null) {
  44. $auth_updates['dhcp'] = $a_dhcp;
  45. }
  46. if (getPOST("e_dhcp_acl", $page_url) !== null) {
  47. $auth_updates['dhcp_acl'] = $a_dhcp_acl;
  48. }
  49. if (getPOST("e_dhcp_option_set", $page_url) !== null) {
  50. $auth_updates['dhcp_option_set'] = $a_dhcp_option_set;
  51. }
  52. if (getPOST("e_traf", $page_url) !== null) {
  53. $auth_updates['save_traf'] = $a_traf;
  54. }
  55. if (getPOST("e_nag_enabled", $page_url) !== null) {
  56. $auth_updates['nagios'] = $n_enabled;
  57. }
  58. if (getPOST("e_nag_link", $page_url) !== null) {
  59. $auth_updates['link_check'] = $n_link;
  60. }
  61. if (getPOST("e_nag_handler", $page_url) !== null) {
  62. $auth_updates['nagios_handler'] = $n_handler;
  63. }
  64. // Обновляем запись в user_auth
  65. if (!empty($auth_updates)) {
  66. $ret = update_record($db_link, "user_auth", "id = ?", $auth_updates, [$id]);
  67. if (!$ret) $all_ok = false;
  68. }
  69. // Изменение группы пользователя
  70. if (getPOST("e_new_ou", $page_url) !== null && $a_ou_id >0) {
  71. $user_updates = ['ou_id' => $a_ou_id];
  72. $auth_updates_for_all = ['ou_id' => $a_ou_id];
  73. // Обновляем user_list
  74. $ret = update_record($db_link, "user_list", "id = ?", $user_updates, [(int)$cur_auth['user_id']]);
  75. if (!$ret) $all_ok = false;
  76. // Обновляем все записи user_auth для этого пользователя
  77. $ret = update_records($db_link, "user_auth", "user_id = ?", $auth_updates_for_all, [(int)$cur_auth['user_id']]);
  78. if (!$ret) $all_ok = false;
  79. }
  80. // Правило привязки MAC
  81. if (getPOST("e_bind_mac", $page_url) !== null) {
  82. if ($cur_auth && !empty($cur_auth['mac'])) {
  83. if ($a_bind_mac) {
  84. $user_rule = get_record_sql($db_link, "SELECT * FROM auth_rules WHERE user_id = ? AND rule_type = 2", [(int)$cur_auth['user_id']]);
  85. $mac_rule = get_record_sql($db_link, "SELECT * FROM auth_rules WHERE rule = ? AND rule_type = 2", [$cur_auth['mac']]);
  86. if (!$user_rule && !$mac_rule) {
  87. $new_rule = [
  88. 'user_id' => (int)$cur_auth['user_id'],
  89. 'rule_type' => 2,
  90. 'rule' => $cur_auth['mac']
  91. ];
  92. insert_record($db_link, "auth_rules", $new_rule);
  93. } else {
  94. LOG_INFO($db_link, "Auto rule for user_id: " . $cur_auth['user_id'] . " and mac " . $cur_auth['mac'] . " already exists");
  95. }
  96. } else {
  97. delete_records($db_link, "auth_rules", "user_id = ? AND rule_type = 2", [(int)$cur_auth['user_id']]);
  98. }
  99. } else {
  100. LOG_ERROR($db_link, "Auto rule for user_id: " . ($cur_auth['user_id'] ?? 'N/A') . " not created. Record not found or empty mac.");
  101. }
  102. }
  103. // Правило привязки IP
  104. if (getPOST("e_bind_ip", $page_url) !== null) {
  105. if ($cur_auth && !empty($cur_auth['ip'])) {
  106. if ($a_bind_ip) {
  107. $user_rule = get_record_sql($db_link, "SELECT * FROM auth_rules WHERE user_id = ? AND rule_type = 1", [(int)$cur_auth['user_id']]);
  108. $ip_rule = get_record_sql($db_link, "SELECT * FROM auth_rules WHERE rule = ? AND rule_type = 1", [$cur_auth['ip']]);
  109. if (!$user_rule && !$ip_rule) {
  110. $new_rule = [
  111. 'user_id' => (int)$cur_auth['user_id'],
  112. 'rule_type' => 1,
  113. 'rule' => $cur_auth['ip']
  114. ];
  115. insert_record($db_link, "auth_rules", $new_rule);
  116. } else {
  117. LOG_INFO($db_link, "Auto rule for user_id: " . $cur_auth['user_id'] . " and ip " . $cur_auth['ip'] . " already exists");
  118. }
  119. } else {
  120. delete_records($db_link, "auth_rules", "user_id = ? AND rule_type = 1", [(int)$cur_auth['user_id']]);
  121. }
  122. } else {
  123. LOG_ERROR($db_link, "Auto rule for user_id: " . ($cur_auth['user_id'] ?? 'N/A') . " not created. Record not found or empty ip.");
  124. }
  125. }
  126. }
  127. }
  128. $message = $all_ok ? "Success!" : "Fail!";
  129. print "<div style='padding:20px; font-size:18px; background:#e9f7ef; border:1px solid #2ecc71;'>$message</div>";
  130. ?>