"Delete", 2 => "Copy", 3 => "Enable", 4 => "Disable", 5 => "Batch Copy" ); /* remember the tab we came from */ load_current_session_value("tab", "sess_user_admin_tab", "user_realms_edit"); switch (get_request_var_request("action")) { case 'actions': form_actions(); break; case 'save': form_save(); break; case 'perm_remove': perm_remove(); break; case 'user_edit': include_once("include/top_header.php"); user_edit(); include_once("include/bottom_footer.php"); break; default: include_once("include/top_header.php"); user(); include_once("include/bottom_footer.php"); break; } /* -------------------------- Actions Function -------------------------- */ function form_actions() { global $colors, $user_actions, $auth_realms; /* if we are to save this form, instead of display it */ if (isset($_POST["selected_items"])) { if (get_request_var_post("drp_action") != "2") { $selected_items = unserialize(stripslashes(get_request_var_post("selected_items"))); } if (get_request_var_post("drp_action") == "1") { /* delete */ for ($i=0;($i get_request_var_post("new_fullname") ); if (strlen($new_username)) { if (sizeof(db_fetch_assoc("SELECT username FROM user_auth WHERE username = '" . $new_username . "' AND realm = " . $new_realm))) { raise_message(19); } else { if (user_copy($template_user["username"], $new_username, $template_user["realm"], $new_realm, false, $overwrite) === false) { raise_message(2); } else { raise_message(1); } } } } if (get_request_var_post("drp_action") == "3") { /* enable */ for ($i=0;($i"; } $user_array[$i] = $matches[1]; $i++; } } /* Check for deleting of Graph Export User */ if ((get_request_var_post("drp_action") == "1") && isset($user_array) && sizeof($user_array)) { /* delete */ $exportuser = read_config_option('export_user_id'); if (in_array($exportuser, $user_array)) { raise_message(22); header("Location: user_admin.php"); exit; } } include_once("./include/top_header.php"); html_start_box("" . $user_actions[get_request_var_post("drp_action")] . "", "60%", $colors["header_panel"], "3", "center", ""); print "
\n"; if (isset($user_array) && sizeof($user_array)) { if ((get_request_var_post("drp_action") == "1") && (sizeof($user_array))) { /* delete */ print "

When you click \"Continue\", the selected User(s) will be deleted.

    $user_list

\n"; $save_html = " "; } $user_id = ""; if ((get_request_var_post("drp_action") == "2") && (sizeof($user_array))) { /* copy */ $user_id = $user_array[0]; $user_realm = db_fetch_cell("SELECT realm FROM user_auth WHERE id = " . $user_id); print " When you click \"Continue\" the selected User will be copied to the new User below

Template Username: " . db_fetch_cell("SELECT username FROM user_auth WHERE id=" . $user_id) . " New Username: "; print form_text_box("new_username", "", "", 25); print " New Full Name: "; print form_text_box("new_fullname", "", "", 35); print " New Realm: \n"; print form_dropdown("new_realm", $auth_realms, "", "", $user_realm, "", 0); print " \n"; $save_html = " "; } if ((get_request_var_post("drp_action") == "3") && (sizeof($user_array))) { /* enable */ print "

When you click \"Continue\" the selected User(s) will be enabled.

    $user_list

\n"; $save_html = " "; } if ((get_request_var_post("drp_action") == "4") && (sizeof($user_array))) { /* disable */ print "

When you click \"Continue\" the selected User(s) will be disabled.

    $user_list

\n"; $save_html = " "; } if ((get_request_var_post("drp_action") == "5") && (sizeof($user_array))) { /* batch copy */ $usernames = db_fetch_assoc("SELECT id,username FROM user_auth WHERE realm = 0 ORDER BY username"); print " When you click \"Continue\" you will overwrite selected the User(s) settings with the selected template User settings and permissions? Original user Full Name, Password, Realm and Enable status will be retained, all other fields will be overwritten from Template User.

Template User: \n"; print form_dropdown("template_user", $usernames, "username", "id", "", "", 0); print "

User(s) to update:

    $user_list

\n"; $save_html = " "; } }else{ print "You must select at least one user.\n"; $save_html = ""; } print " "; if (get_request_var_post("drp_action") == "2") { /* copy */ print " \n"; }else{ print " \n"; } print " $save_html "; html_end_box(); include_once("./include/bottom_footer.php"); } /* -------------------------- Save Function -------------------------- */ function form_save() { global $settings_graphs; /* graph permissions */ if ((isset($_POST["save_component_graph_perms"])) && (!is_error_message())) { /* ================= input validation ================= */ input_validate_input_number(get_request_var_post("id")); input_validate_input_number(get_request_var_post("perm_graphs")); input_validate_input_number(get_request_var_post("perm_trees")); input_validate_input_number(get_request_var_post("perm_hosts")); input_validate_input_number(get_request_var_post("perm_graph_templates")); input_validate_input_number(get_request_var_post("policy_graphs")); input_validate_input_number(get_request_var_post("policy_trees")); input_validate_input_number(get_request_var_post("policy_hosts")); input_validate_input_number(get_request_var_post("policy_graph_templates")); /* ==================================================== */ $add_button_clicked = false; if (isset($_POST["add_graph_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_graphs") . ",1)"); $add_button_clicked = true; }elseif (isset($_POST["add_tree_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_trees") . ",2)"); $add_button_clicked = true; }elseif (isset($_POST["add_host_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_hosts") . ",3)"); $add_button_clicked = true; }elseif (isset($_POST["add_graph_template_y"])) { db_execute("REPLACE INTO user_auth_perms (user_id,item_id,type) VALUES (" . get_request_var_post("id") . "," . get_request_var_post("perm_graph_templates") . ",4)"); $add_button_clicked = true; } if ($add_button_clicked == true) { header("Location: user_admin.php?action=user_edit&tab=graph_perms_edit&id=" . get_request_var_post("id")); exit; } } /* user management save */ if (isset($_POST["save_component_user"])) { /* ================= input validation ================= */ input_validate_input_number(get_request_var_post("id")); input_validate_input_number(get_request_var_post("realm")); /* ==================================================== */ if ((get_request_var_post("password") == "") && (get_request_var_post("password_confirm") == "")) { $password = db_fetch_cell("SELECT password FROM user_auth WHERE id = " . get_request_var_post("id")); }else{ $password = md5(get_request_var_post("password")); } /* check duplicate username */ if (sizeof(db_fetch_row("select * from user_auth where realm = " . get_request_var_post("realm") . " and username = '" . get_request_var_post("username") . "' and id != " . get_request_var_post("id")))) { raise_message(12); } /* check for guest or template user */ $username = db_fetch_cell("select username from user_auth where id = " . get_request_var_post("id")); if ($username != get_request_var_post("username")) { if ($username == read_config_option("user_template")) { raise_message(20); } if ($username == read_config_option("guest_user")) { raise_message(20); } } /* check to make sure the passwords match; if not error */ if (get_request_var_post("password") != get_request_var_post("password_confirm")) { raise_message(4); } form_input_validate(get_request_var_post("password"), "password", "" . preg_quote(get_request_var_post("password_confirm")) . "", true, 4); form_input_validate(get_request_var_post("password_confirm"), "password_confirm", "" . preg_quote(get_request_var_post("password")) . "", true, 4); $save["id"] = get_request_var_post("id"); $save["username"] = form_input_validate(get_request_var_post("username"), "username", "^[A-Za-z0-9\._\\\@\ -]+$", false, 3); $save["full_name"] = form_input_validate(get_request_var_post("full_name"), "full_name", "", true, 3); $save["password"] = $password; $save["must_change_password"] = form_input_validate(get_request_var_post("must_change_password", ""), "must_change_password", "", true, 3); $save["show_tree"] = form_input_validate(get_request_var_post("show_tree", ""), "show_tree", "", true, 3); $save["show_list"] = form_input_validate(get_request_var_post("show_list", ""), "show_list", "", true, 3); $save["show_preview"] = form_input_validate(get_request_var_post("show_preview", ""), "show_preview", "", true, 3); $save["graph_settings"] = form_input_validate(get_request_var_post("graph_settings", ""), "graph_settings", "", true, 3); $save["login_opts"] = form_input_validate(get_request_var_post("login_opts"), "login_opts", "", true, 3); $save["policy_graphs"] = form_input_validate(get_request_var_post("policy_graphs", get_request_var_post("_policy_graphs")), "policy_graphs", "", true, 3); $save["policy_trees"] = form_input_validate(get_request_var_post("policy_trees", get_request_var_post("_policy_trees")), "policy_trees", "", true, 3); $save["policy_hosts"] = form_input_validate(get_request_var_post("policy_hosts", get_request_var_post("_policy_hosts")), "policy_hosts", "", true, 3); $save["policy_graph_templates"] = form_input_validate(get_request_var_post("policy_graph_templates", get_request_var_post("_policy_graph_templates")), "policy_graph_templates", "", true, 3); $save["realm"] = get_request_var_post("realm", 0); $save["enabled"] = form_input_validate(get_request_var_post("enabled", ""), "enabled", "", true, 3); if (!is_error_message()) { $user_id = sql_save($save, "user_auth"); if ($user_id) { raise_message(1); }else{ raise_message(2); } if (isset($_POST["save_component_realm_perms"])) { db_execute("DELETE FROM user_auth_realm WHERE user_id = " . $user_id); while (list($var, $val) = each($_POST)) { if (eregi("^[section]", $var)) { if (substr($var, 0, 7) == "section") { db_execute("REPLACE INTO user_auth_realm (user_id,realm_id) VALUES (" . $user_id . "," . substr($var, 7) . ")"); } } } }elseif (isset($_POST["save_component_graph_settings"])) { while (list($tab_short_name, $tab_fields) = each($settings_graphs)) { while (list($field_name, $field_array) = each($tab_fields)) { if ((isset($field_array["items"])) && (is_array($field_array["items"]))) { while (list($sub_field_name, $sub_field_array) = each($field_array["items"])) { db_execute("REPLACE INTO settings_graphs (user_id,name,value) VALUES (" . (!empty($user_id) ? $user_id : get_request_var_post("id")) . ",'$sub_field_name', '" . get_request_var_post($sub_field_name, "") . "')"); } }else{ db_execute("REPLACE INTO settings_graphs (user_id,name,value) VALUES (" . (!empty($user_id) ? $user_id : $_POST["id"]) . ",'$field_name', '" . get_request_var_post($field_name) . "')"); } } } /* reset local settings cache so the user sees the new settings */ kill_session_var("sess_graph_config_array"); }elseif (isset($_POST["save_component_graph_perms"])) { db_execute("UPDATE user_auth SET policy_graphs = " . get_request_var_post("policy_graphs") . ", policy_trees = " . get_request_var_post("policy_trees") . ", policy_hosts = " . get_request_var_post("policy_hosts") . ", policy_graph_templates = " . get_request_var_post("policy_graph_templates") . " WHERE id = " . get_request_var_post("id")); } } } /* redirect to the appropriate page */ header("Location: user_admin.php?action=user_edit&id=" . (empty($user_id) ? $_POST["id"] : $user_id)); } /* -------------------------- Graph Permissions -------------------------- */ function perm_remove() { /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); input_validate_input_number(get_request_var("user_id")); /* ==================================================== */ if (get_request_var("type") == "graph") { db_execute("DELETE FROM user_auth_perms WHERE type = 1 AND user_id = " . get_request_var("user_id") . " AND item_id = " . get_request_var("id")); }elseif (get_request_var("type") == "tree") { db_execute("DELETE FROM user_auth_perms WHERE type = 2 AND user_id = " . get_request_var("user_id") . " AND item_id = " . get_request_var("id")); }elseif (get_request_var("type") == "host") { db_execute("DELETE FROM user_auth_perms WHERE type = 3 AND user_id = " . get_request_var("user_id") . " AND item_id = " . get_request_var("id")); }elseif (get_request_var("type") == "graph_template") { db_execute("DELETE FROM user_auth_perms WHERE type = 4 AND user_id=" . get_request_var("user_id") . " and item_id = " . get_request_var("id")); } header("Location: user_admin.php?action=user_edit&tab=graph_perms_edit&id=" . get_request_var("user_id")); } function graph_perms_edit() { global $colors; /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); /* ==================================================== */ $graph_policy_array = array( 1 => "Allow", 2 => "Deny"); if (!empty($_GET["id"])) { $policy = db_fetch_row("SELECT policy_graphs,policy_trees,policy_hosts,policy_graph_templates FROM user_auth WHERE id = " . get_request_var("id")); $header_label = "[edit: " . db_fetch_cell("SELECT username FROM user_auth WHERE id = " . get_request_var("id")) . "]"; } ?>
Graph policies will be evaluated in the order shown until a match is found.
Graph Permissions (By Graph)", "100%", $colors["header"], "3", "center", ""); $graphs = db_fetch_assoc("SELECT graph_templates_graph.local_graph_id, graph_templates_graph.title_cache FROM graph_templates_graph LEFT JOIN user_auth_perms ON (graph_templates_graph.local_graph_id = user_auth_perms.item_id AND user_auth_perms.type = 1) WHERE graph_templates_graph.local_graph_id > 0 AND user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY graph_templates_graph.title_cache"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($graphs as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["title_cache"] . " Delete 
No Graphs
Add Graph:  0 AND local_graph_id NOT IN (SELECT item_id FROM user_auth_perms WHERE user_auth_perms.type=1 AND user_auth_perms.user_id=".get_request_var("id",0).") ORDER BY title_cache"),"title_cache","local_graph_id","","","");?>  

Graph Permissions (By Device)", "100%", $colors["header"], "3", "center", ""); $hosts = db_fetch_assoc("SELECT host.id, CONCAT('',host.description,' (',host.hostname,')') as name FROM host LEFT JOIN user_auth_perms ON (host.id = user_auth_perms.item_id AND user_auth_perms.type = 3) WHERE user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY host.description,host.hostname"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($hosts as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["name"] . " Delete 
No Devices
Add Host:   

Graph Permissions (By Graph Template)", "100%", $colors["header"], "3", "center", ""); $graph_templates = db_fetch_assoc("SELECT graph_templates.id, graph_templates.name from graph_templates LEFT JOIN user_auth_perms ON (graph_templates.id = user_auth_perms.item_id AND user_auth_perms.type = 4) WHERE user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY graph_templates.name"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($graph_templates as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["name"] . " Delete 
No Graph Templates
Add Graph Template:   

Tree Permissions", "100%", $colors["header"], "3", "center", ""); $trees = db_fetch_assoc("SELECT graph_tree.id, graph_tree.name from graph_tree LEFT JOIN user_auth_perms ON (graph_tree.id = user_auth_perms.item_id AND user_auth_perms.type = 2) WHERE user_auth_perms.user_id = " . get_request_var("id", 0) . " ORDER BY graph_tree.name"); ?> "> Default Policy
The default allow/deny graph policy for this user. 0) { foreach ($trees as $item) { $i++; print " \n"; } }else{ print ""; } ?>
$i) " . $item["name"] . " Delete 
No Trees
Add Tree:   

Realm permissions control which sections of Cacti this user will have access to.
Realm Permissions \n \n"; ?>
0) { $old_value = "on"; }else{ $old_value = ""; } $column1 = floor((sizeof($user_auth_realms) / 2) + (sizeof($user_auth_realms) % 2)); if ($i == $column1) { print ""; } form_checkbox("section" . $realm_id, $old_value, $realm_name, "", "", "", (!empty($_GET["id"]) ? 1 : 0)); print "
"; $i++; } ?>
Graph settings control how graphs are displayed for this user.
Graph Settings", "100%", $colors["header"], "3", "center", ""); while (list($tab_short_name, $tab_fields) = each($settings_graphs)) { ?> $tab_fields[$field_name]); if ((isset($field_array["items"])) && (is_array($field_array["items"]))) { while (list($sub_field_name, $sub_field_array) = each($field_array["items"])) { if (graph_config_value_exists($sub_field_name, $_GET["id"])) { $form_array[$field_name]["items"][$sub_field_name]["form_id"] = 1; } $form_array[$field_name]["items"][$sub_field_name]["value"] = db_fetch_cell("SELECT value FROM settings_graphs WHERE name = '" . $sub_field_name . "' AND user_id = " . get_request_var("id")); } }else{ if (graph_config_value_exists($field_name, $_GET["id"])) { $form_array[$field_name]["form_id"] = 1; } $form_array[$field_name]["value"] = db_fetch_cell("select value from settings_graphs where name='$field_name' and user_id=" . $_GET["id"]); } } draw_edit_form( array( "config" => array( "no_form_tag" => true ), "fields" => $form_array ) ); } html_end_box(); form_hidden_box("save_component_graph_settings","1",""); } /* -------------------------- User Administration -------------------------- */ function user_edit() { global $colors, $fields_user_user_edit_host; /* ================= input validation ================= */ input_validate_input_number(get_request_var("id")); /* ==================================================== */ if (!empty($_GET["id"])) { $user = db_fetch_row("SELECT * FROM user_auth WHERE id = " . get_request_var("id")); $header_label = "[edit: " . $user["username"] . "]"; }else{ $header_label = "[new]"; } html_start_box("User Management $header_label", "100%", $colors["header"], "3", "center", ""); draw_edit_form(array( "config" => array("form_name" => "chk"), "fields" => inject_form_variables($fields_user_user_edit_host, (isset($user) ? $user : array())) )); html_end_box(); if (!empty($_GET["id"])) { /* draw user admin nav tabs */ ?>
nowrap='nowrap' width='150' align='center' class='tab'> Realm Permissions nowrap='nowrap' width='150' align='center' class='tab'> Graph Permissions nowrap='nowrap' width='130' align='center' class='tab'> Graph Settings
User Management", "100%", $colors["header"], "3", "center", "user_admin.php?action=user_edit"); ?> ">
Search:  ">  
\n"; html_start_box("", "100%", $colors["header"], "3", "center", ""); $total_rows = db_fetch_cell("SELECT COUNT(user_auth.id) FROM user_auth $sql_where"); $user_list = db_fetch_assoc("SELECT id, user_auth.username, full_name, realm, enabled, policy_graphs, time, max(time) as dtime FROM user_auth LEFT JOIN user_log ON (user_auth.id = user_log.user_id) $sql_where GROUP BY id ORDER BY " . get_request_var_request("sort_column") . " " . get_request_var_request("sort_direction") . " LIMIT " . (read_config_option("num_rows_device") * (get_request_var_request("page") - 1)) . "," . read_config_option("num_rows_device")); /* generate page list */ $url_page_select = get_page_list(get_request_var_request("page"), MAX_DISPLAY_PAGES, read_config_option("num_rows_device"), $total_rows, "user_admin.php?filter=" . get_request_var_request("filter")); $nav = " \n \n \n
<< "; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= "Previous"; if (get_request_var_request("page") > 1) { $nav .= ""; } $nav .= " Showing Rows " . ((read_config_option("num_rows_device") * (get_request_var_request("page") - 1)) + 1) . " to " . ((($total_rows < read_config_option("num_rows_device")) || ($total_rows < (read_config_option("num_rows_device") * get_request_var_request("page")))) ? $total_rows : (read_config_option("num_rows_device") * get_request_var_request("page"))) . " of $total_rows [$url_page_select] "; if ((get_request_var_request("page") * read_config_option("num_rows_device")) < $total_rows) { $nav .= ""; } $nav .= "Next"; if ((get_request_var_request("page") * read_config_option("num_rows_device")) < $total_rows) { $nav .= ""; } $nav .= " >>
\n"; print $nav; $display_text = array( "username" => array("User Name", "ASC"), "full_name" => array("Full Name", "ASC"), "enabled" => array("Enabled", "ASC"), "realm" => array("Realm", "ASC"), "policy_graphs" => array("Default Graph Policy", "ASC"), "dtime" => array("Last Login", "DESC")); html_header_sort_checkbox($display_text, get_request_var_request("sort_column"), get_request_var_request("sort_direction"), false); $i = 0; if (sizeof($user_list) > 0) { foreach ($user_list as $user) { if (empty($user["dtime"]) || ($user["dtime"] == "12/31/1969")) { $last_login = "N/A"; }else{ $last_login = strftime("%A, %B %d, %Y %H:%M:%S ", strtotime($user["dtime"]));; } if ($user["enabled"] == "on") { $enabled = "Yes"; }else{ $enabled = "No"; } form_alternate_row_color($colors["alternate"], $colors["light"], $i, 'line' . $user["id"]); $i++; form_selectable_cell("" . (strlen(get_request_var_request("filter")) ? eregi_replace("(" . preg_quote(get_request_var_request("filter")) . ")", "\\1", $user["username"]) : $user["username"]) , $user["id"]); form_selectable_cell((strlen(get_request_var_request("filter")) ? eregi_replace("(" . preg_quote(get_request_var_request("filter")) . ")", "\\1", $user["full_name"]) : $user["full_name"]), $user["id"]); form_selectable_cell($enabled, $user["id"]); form_selectable_cell($auth_realms[$user["realm"]], $user["id"]); if ($user["policy_graphs"] == "1") { form_selectable_cell("ALLOW", $user["id"]); }else{ form_selectable_cell("DENY", $user["id"]); } form_selectable_cell($last_login, $user["id"]); form_checkbox_cell($user["username"], $user["id"]); form_end_row(); } print $nav; }else{ print "No Users"; } html_end_box(false); draw_actions_dropdown($user_actions); } ?>