diff options
| author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-10-23 07:34:27 +0000 |
|---|---|---|
| committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2006-10-23 07:34:27 +0000 |
| commit | 28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89 (patch) | |
| tree | 8281ccd48964ee0dd11c5ea689091fa3cef706fb /frontends/php/users.php | |
| parent | 495799b2aa61aab23d74d7faa110a0cd09d59bf0 (diff) | |
| download | zabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.tar.gz zabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.tar.xz zabbix-28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89.zip | |
- developed group permission system (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@3371 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/users.php')
| -rw-r--r-- | frontends/php/users.php | 568 |
1 files changed, 349 insertions, 219 deletions
diff --git a/frontends/php/users.php b/frontends/php/users.php index 11d30306..78a4c7d4 100644 --- a/frontends/php/users.php +++ b/frontends/php/users.php @@ -19,328 +19,458 @@ **/ ?> <?php - include "include/config.inc.php"; - include "include/forms.inc.php"; + require_once "include/config.inc.php"; + require_once "include/triggers.inc.php"; + require_once "include/media.inc.php"; + require_once "include/users.inc.php"; + require_once "include/forms.inc.php"; $page["title"] = "S_USERS"; $page["file"] = "users.php"; - show_header($page["title"]); +include_once "include/page_header.php"; + insert_confirm_javascript(); ?> <?php - if(!check_anyright("User","U")) - { - show_table_header("<font color=\"AA0000\">".S_NO_PERMISSIONS."</font>"); - show_page_footer(); - exit; - } - $_REQUEST["config"]=get_request("config",get_profile("web.users.config",0)); update_profile("web.users.config",$_REQUEST["config"]); ?> <?php - update_profile("web.menu.config.last",$page["file"]); -?> - -<?php // VAR TYPE OPTIONAL FLAGS VALIDATION EXCEPTION $fields=array( - "config"=> array(T_ZBX_INT, O_OPT, NULL, IN("0,1"), NULL), + "config"=> array(T_ZBX_INT, O_OPT, null, IN("0,1"), null), + "perm_details"=>array(T_ZBX_INT, O_OPT, null, IN("0,1"), null), /* user */ "userid"=> array(T_ZBX_INT, O_NO, P_SYS, DB_ID,'{config}==0&&{form}=="update"'), - - "alias"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, '{config}==0&&isset({save})'), - "name"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, '{config}==0&&isset({save})'), - "surname"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, '{config}==0&&isset({save})'), - "password1"=> array(T_ZBX_STR, O_OPT, NULL, NULL, '{config}==0&&isset({save})'), - "password2"=> array(T_ZBX_STR, O_OPT, NULL, NULL, '{config}==0&&isset({save})'), - "lang"=> array(T_ZBX_STR, O_OPT, NULL, NOT_EMPTY, '{config}==0&&isset({save})'), - "autologout"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,3600),'{config}==0&&isset({save})'), - "url"=> array(T_ZBX_STR, O_OPT, NULL, NULL, '{config}==0&&isset({save})'), - "refresh"=> array(T_ZBX_INT, O_OPT, NULL, BETWEEN(0,3600),'{config}==0&&isset({save})'), - - "right"=> array(T_ZBX_STR, O_NO, NULL, NOT_EMPTY, + "group_userid"=>array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null), + + "alias"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==0&&isset({save})'), + "name"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==0&&isset({save})'), + "surname"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==0&&isset({save})'), + "password1"=> array(T_ZBX_STR, O_OPT, null, null, '{config}==0&&isset({save})&&{form}!="update"&&isset({change_password})'), + "password2"=> array(T_ZBX_STR, O_OPT, null, null, '{config}==0&&isset({save})&&{form}!="update"&&isset({change_password})'), + "user_type"=> array(T_ZBX_INT, O_OPT, null, IN('1,2,3'), '{config}==0&&isset({save})'), + "user_groups"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==0&&isset({save})'), + "user_groups_to_del"=> array(T_ZBX_INT, O_OPT, null, DB_ID, null), + "user_medias"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, null), + "user_medias_to_del"=> array(T_ZBX_STR, O_OPT, null, DB_ID, null), + "new_group"=> array(T_ZBX_STR, O_OPT, null, null, null), + "new_media"=> array(T_ZBX_STR, O_OPT, null, null, null), + "enable_media"=>array(T_ZBX_INT, O_OPT, null, null, null), + "disable_media"=>array(T_ZBX_INT, O_OPT,null, null, null), + "lang"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==0&&isset({save})'), + "autologout"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(0,3600),'{config}==0&&isset({save})'), + "url"=> array(T_ZBX_STR, O_OPT, null, null, '{config}==0&&isset({save})'), + "refresh"=> array(T_ZBX_INT, O_OPT, null, BETWEEN(0,3600),'{config}==0&&isset({save})'), + + "right"=> array(T_ZBX_STR, O_NO, null, NOT_EMPTY, '{register}=="add permission"&&isset({userid})'), - "permission"=> array(T_ZBX_STR, O_NO, NULL, NOT_EMPTY, + "permission"=> array(T_ZBX_STR, O_NO, null, NOT_EMPTY, '{register}=="add permission"&&isset({userid})'), - "id"=> array(T_ZBX_INT, O_NO, NULL, DB_ID, + "id"=> array(T_ZBX_INT, O_NO, null, DB_ID, '{register}=="add permission"&&isset({userid})'), - "rightid"=> array(T_ZBX_INT, O_NO, NULL, DB_ID, + "rightid"=> array(T_ZBX_INT, O_NO, null, DB_ID, '{register}=="delete permission"&&isset({userid})'), /* group */ "usrgrpid"=> array(T_ZBX_INT, O_NO, P_SYS, DB_ID,'{config}==1&&{form}=="update"'), + "group_groupid"=>array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null), - "gname"=> array(T_ZBX_STR, O_NO, NULL, NOT_EMPTY, '{config}==1&&isset({save})'), - "users"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, NULL), + "gname"=> array(T_ZBX_STR, O_OPT, null, NOT_EMPTY, '{config}==1&&isset({save})'), + "users"=> array(T_ZBX_INT, O_OPT, P_SYS, DB_ID, null), + "new_right"=> array(T_ZBX_STR, O_OPT, null, null, null), + "new_user"=> array(T_ZBX_STR, O_OPT, null, null, null), + "right_to_del"=>array(T_ZBX_STR, O_OPT, null, null, null), + "group_users_to_del"=> array(T_ZBX_STR, O_OPT, null, null, null), + "group_users"=> array(T_ZBX_STR, O_OPT, null, null, null), + "group_rights"=>array(T_ZBX_STR, O_OPT, null, null, null), /* actions */ "register"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, - IN('"add permission","delete permission"'), NULL), + IN('"add permission","delete permission"'), null), + + "save"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "delete"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "delete_selected"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "del_user_group"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "del_user_media"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + + "del_read_only"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "del_read_write"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "del_deny"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + + "del_group_user"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), - "save"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), - "delete"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, NULL, NULL), - "cancel"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), + "add_read_only"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "add_read_write"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "add_deny"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + + "change_password"=> array(T_ZBX_STR, O_OPT, P_SYS|P_ACT, null, null), + "cancel"=> array(T_ZBX_STR, O_OPT, P_SYS, null, null), /* other */ - "form"=> array(T_ZBX_STR, O_OPT, P_SYS, NULL, NULL), - "form_refresh"=>array(T_ZBX_STR, O_OPT, NULL, NULL, NULL) + "form"=> array(T_ZBX_STR, O_OPT, P_SYS, null, null), + "form_refresh"=>array(T_ZBX_STR, O_OPT, null, null, null) ); + check_fields($fields); -?> + if(isset($_REQUEST["usrgrpid"]) and + DBfetch(DBselect('select id from users_groups where userid='.$USER_DETAILS['userid'].' and usrgrpid='.$_REQUEST["usrgrpid"]))) + { + access_deny(); + } +?> <?php - if(isset($_REQUEST["save"])&&($_REQUEST["config"]==0)) + if($_REQUEST["config"]==0) { - if($_REQUEST["password1"]!=$_REQUEST["password2"]){ - if(isset($_REQUEST["userid"])) - show_error_message(S_CANNOT_UPDATE_USER_BOTH_PASSWORDS); - else - show_error_message(S_CANNOT_ADD_USER_BOTH_PASSWORDS_MUST); - } else { - if(isset($_REQUEST["userid"])){ - $action = AUDIT_ACTION_UPDATE; - $result=update_user($_REQUEST["userid"], - $_REQUEST["name"],$_REQUEST["surname"],$_REQUEST["alias"], - $_REQUEST["password1"],$_REQUEST["url"],$_REQUEST["autologout"], - $_REQUEST["lang"],$_REQUEST["refresh"]); + if(isset($_REQUEST["new_group"])) + { + $_REQUEST['user_groups'] = get_request('user_groups', array()); + $_REQUEST['user_groups'][$_REQUEST['new_group']['usrgrpid']] = $_REQUEST['new_group']['name']; + } + elseif(isset($_REQUEST["new_media"])) + { + $_REQUEST["user_medias"] = get_request('user_medias', array()); + array_push($_REQUEST["user_medias"], $_REQUEST["new_media"]); + } + elseif(isset($_REQUEST["user_medias"]) && isset($_REQUEST["enable_media"])) + { + if(isset($_REQUEST["user_medias"][$_REQUEST["enable_media"]])) + { + $_REQUEST["user_medias"][$_REQUEST["enable_media"]]['active'] = 0; + } + } + elseif(isset($_REQUEST["user_medias"]) && isset($_REQUEST["disable_media"])) + { + if(isset($_REQUEST["user_medias"][$_REQUEST["disable_media"]])) + { + $_REQUEST["user_medias"][$_REQUEST["disable_media"]]['active'] = 1; + } + } + elseif(isset($_REQUEST["save"])) + { + $user_groups = get_request('user_groups', array()); + $user_medias = get_request('user_medias', array()); - show_messages($result, S_USER_UPDATED, S_CANNOT_UPDATE_USER); - } else { - $action = AUDIT_ACTION_ADD; - $result=add_user( - $_REQUEST["name"],$_REQUEST["surname"],$_REQUEST["alias"], - $_REQUEST["password1"],$_REQUEST["url"],$_REQUEST["autologout"], - $_REQUEST["lang"],$_REQUEST["refresh"]); + $_REQUEST["password1"] = get_request("password1", null); + $_REQUEST["password2"] = get_request("password2", null); - show_messages($result, S_USER_ADDED, S_CANNOT_ADD_USER); + if(isset($_REQUEST["password1"]) && $_REQUEST["password1"] == "" && $_REQUEST["alias"]!="guest") + { + show_error_message(S_ONLY_FOR_GUEST_ALLOWED_EMPTY_PASSWORD); } + elseif($_REQUEST["password1"]!=$_REQUEST["password2"]){ + if(isset($_REQUEST["userid"])) + show_error_message(S_CANNOT_UPDATE_USER_BOTH_PASSWORDS); + else + show_error_message(S_CANNOT_ADD_USER_BOTH_PASSWORDS_MUST); + } else { + if(isset($_REQUEST["userid"])){ + $action = AUDIT_ACTION_UPDATE; + $result=update_user($_REQUEST["userid"], + $_REQUEST["name"],$_REQUEST["surname"],$_REQUEST["alias"], + $_REQUEST["password1"],$_REQUEST["url"],$_REQUEST["autologout"], + $_REQUEST["lang"],$_REQUEST["refresh"],$_REQUEST["user_type"], + $user_groups, $user_medias); + + show_messages($result, S_USER_UPDATED, S_CANNOT_UPDATE_USER); + } else { + $action = AUDIT_ACTION_ADD; + $result=add_user( + $_REQUEST["name"],$_REQUEST["surname"],$_REQUEST["alias"], + $_REQUEST["password1"],$_REQUEST["url"],$_REQUEST["autologout"], + $_REQUEST["lang"],$_REQUEST["refresh"],$_REQUEST["user_type"], + $user_groups, $user_medias); + + show_messages($result, S_USER_ADDED, S_CANNOT_ADD_USER); + } + if($result){ + add_audit($action,AUDIT_RESOURCE_USER, + "User alias [".$_REQUEST["alias"]. + "] name [".$_REQUEST["name"]."] surname [". + $_REQUEST["surname"]."]"); + unset($_REQUEST["form"]); + } + } + } + elseif(isset($_REQUEST["del_user_media"])) + { + $user_medias_to_del = get_request('user_medias_to_del', array()); + foreach($user_medias_to_del as $mediaid) + { + if(isset($_REQUEST['user_medias'][$mediaid])) + unset($_REQUEST['user_medias'][$mediaid]); + } + + } + elseif(isset($_REQUEST["del_user_group"])) + { + $user_groups_to_del = get_request('user_groups_to_del', array()); + foreach($user_groups_to_del as $groupid) + { + if(isset($_REQUEST['user_groups'][$groupid])) + unset($_REQUEST['user_groups'][$groupid]); + } + + } + elseif(isset($_REQUEST["delete_selected"])&&isset($_REQUEST['group_userid'])) + { + $group_userid = get_request('group_userid', array()); + foreach($group_userid as $userid) + { + if(!($user_data = get_user_by_userid($userid))) continue; + + $result = delete_user($userid); + show_messages($result, S_USER_DELETED, S_CANNOT_DELETE_USER); + if($result){ + add_audit(AUDIT_ACTION_DELETE,AUDIT_RESOURCE_USER, + "User alias [".$user_data["alias"]."] name [".$user_data["name"]."] surname [". + $user_data["surname"]."]"); + } + } + } + elseif(isset($_REQUEST["delete"])&&isset($_REQUEST["userid"])) + { + $user=get_user_by_userid($_REQUEST["userid"]); + $result=delete_user($_REQUEST["userid"]); + show_messages($result, S_USER_DELETED, S_CANNOT_DELETE_USER); if($result){ - add_audit($action,AUDIT_RESOURCE_USER, - "User alias [".$_REQUEST["alias"]. - "] name [".$_REQUEST["name"]."] surname [". - $_REQUEST["surname"]."]]"); + add_audit(AUDIT_ACTION_DELETE,AUDIT_RESOURCE_USER, + "User alias [".$user["alias"]."] name [".$user["name"]."] surname [". + $user["surname"]."]"); + + unset($_REQUEST["userid"]); unset($_REQUEST["form"]); } } } - - if(isset($_REQUEST["delete"])&&($_REQUEST["config"]==0)) + else /* config == 1 */ { - $user=get_user_by_userid($_REQUEST["userid"]); - $result=delete_user($_REQUEST["userid"]); - show_messages($result, S_USER_DELETED, S_CANNOT_DELETE_USER); - if($result){ - add_audit(AUDIT_ACTION_DELETE,AUDIT_RESOURCE_USER, - "User alias [".$user["alias"]."] name [".$user["name"]."] surname [". - $user["surname"]."]"); - - unset($_REQUEST["userid"]); - unset($_REQUEST["form"]); + if(isset($_REQUEST['del_deny'])&&isset($_REQUEST['right_to_del']['deny'])) + { + $_REQUEST['group_rights'] = get_request('group_rights',array()); + foreach($_REQUEST['right_to_del']['deny'] as $name) + { + if(!isset($_REQUEST['group_rights'][$name])) continue; + if($_REQUEST['group_rights'][$name]['permission'] == PERM_DENY) + unset($_REQUEST['group_rights'][$name]); + } } - } - - if(isset($_REQUEST["save"])&&($_REQUEST["config"]==1)) - { - $users=get_request("users", array());; - - if(isset($_REQUEST["usrgrpid"])){ - $result=update_user_group($_REQUEST["usrgrpid"], $_REQUEST["gname"], $users); - show_messages($result, S_GROUP_UPDATED, S_CANNOT_UPDATE_GROUP); - }else{ - $result=add_user_group($_REQUEST["gname"], $users); - show_messages($result, S_GROUP_ADDED, S_CANNOT_ADD_GROUP); + elseif(isset($_REQUEST['del_read_only'])&&isset($_REQUEST['right_to_del']['read_only'])) + { + $_REQUEST['group_rights'] = get_request('group_rights',array()); + foreach($_REQUEST['right_to_del']['read_only'] as $name) + { + if(!isset($_REQUEST['group_rights'][$name])) continue; + if($_REQUEST['group_rights'][$name]['permission'] == PERM_READ_ONLY) + unset($_REQUEST['group_rights'][$name]); + } } - - if($result){ - unset($_REQUEST["form"]); + elseif(isset($_REQUEST['del_read_write'])&&isset($_REQUEST['right_to_del']['read_write'])) + { + $_REQUEST['group_rights'] = get_request('group_rights',array()); + foreach($_REQUEST['right_to_del']['read_write'] as $name) + { + if(!isset($_REQUEST['group_rights'][$name])) continue; + if($_REQUEST['group_rights'][$name]['permission'] == PERM_READ_WRITE) + unset($_REQUEST['group_rights'][$name]); + } } - } - - if(isset($_REQUEST["delete"])&&($_REQUEST["config"]==1)) - { - $result=delete_user_group($_REQUEST["usrgrpid"]); - show_messages($result, S_GROUP_DELETED, S_CANNOT_DELETE_GROUP); - if($result){ - unset($_REQUEST["usrgrpid"]); - unset($_REQUEST["form"]); + elseif(isset($_REQUEST["new_right"])) + { + $_REQUEST['group_rights'] = get_request('group_rights', array()); + foreach(array('type', 'id', 'permission') as $fld_name) + $_REQUEST['group_rights'][$_REQUEST['new_right']['name']][$fld_name] = $_REQUEST['new_right'][$fld_name]; } - } + elseif(isset($_REQUEST["new_user"])) + { + $_REQUEST['group_users'] = get_request('group_users', array()); + $_REQUEST['group_users'][$_REQUEST['new_user']['userid']] = $_REQUEST['new_user']['alias']; + } + elseif(isset($_REQUEST["del_group_user"])&&isset($_REQUEST['group_users_to_del'])) + { + foreach($_REQUEST['group_users_to_del'] as $userid) + if(isset($_REQUEST['group_users'][$userid])) + unset($_REQUEST['group_users'][$userid]); + } + elseif(isset($_REQUEST["save"])) + { + $group_users = get_request("group_users", array());; + $group_rights = get_request("group_rights", array());; - if(isset($_REQUEST["register"])) - { - if($_REQUEST["register"]=="delete permission") + if(isset($_REQUEST["usrgrpid"])){ + $action = AUDIT_ACTION_UPDATE; + $result=update_user_group($_REQUEST["usrgrpid"], $_REQUEST["gname"], $group_users, $group_rights); + show_messages($result, S_GROUP_UPDATED, S_CANNOT_UPDATE_GROUP); + }else{ + $action = AUDIT_ACTION_ADD; + $result=add_user_group($_REQUEST["gname"], $group_users, $group_rights); + show_messages($result, S_GROUP_ADDED, S_CANNOT_ADD_GROUP); + } + + if($result){ + add_audit($action,AUDIT_RESOURCE_USER_GROUP,"Group name [".$_REQUEST["gname"]."]"); + unset($_REQUEST["form"]); + } + } + elseif(isset($_REQUEST["delete_selected"])&&isset($_REQUEST['group_groupid'])) { - $result=delete_permission($_REQUEST["rightid"]); - show_messages($result, S_PERMISSION_DELETED, S_CANNOT_DELETE_PERMISSION); - unset($rightid); + $group_groupid = get_request('group_groupid', array()); + foreach($group_groupid as $usrgrpid) + { + if(!($group = get_group_by_usrgrpid($usrgrpid))) continue; + + $result = delete_user_group($usrgrpid); + show_messages($result, S_GROUP_DELETED, S_CANNOT_DELETE_GROUP); + if($result){ + add_audit(AUDIT_ACTION_DELETE,AUDIT_RESOURCE_USER_GROUP,"Group name [".$group["name"]."]"); + } + } } - if($_REQUEST["register"]=="add permission") + elseif(isset($_REQUEST["delete"])) { - $result=add_permission($_REQUEST["userid"],$_REQUEST["right"], - $_REQUEST["permission"],$_REQUEST["id"]); + $group = get_group_by_usrgrpid($_REQUEST["usrgrpid"]); + + $result=delete_user_group($_REQUEST["usrgrpid"]); + show_messages($result, S_GROUP_DELETED, S_CANNOT_DELETE_GROUP); + if($result){ + add_audit(AUDIT_ACTION_DELETE,AUDIT_RESOURCE_USER_GROUP,"Group name [".$group["name"]."]"); - show_messages($result, S_PERMISSION_ADDED, S_CANNOT_ADD_PERMISSION); + unset($_REQUEST["usrgrpid"]); + unset($_REQUEST["form"]); + } } } ?> <?php + $frmForm = new CForm(); + $cmbConf = new CComboBox("config",$_REQUEST["config"],"submit()"); $cmbConf->AddItem(0,S_USERS); $cmbConf->AddItem(1,S_USER_GROUPS); - if($_REQUEST["config"] == 0){ - $btnNew = new CButton("form",S_CREATE_USER); - }else if($_REQUEST["config"] == 1){ - $btnNew = new CButton("form",S_CREATE_GROUP); - }else{ - $btnNew = SPACE; - } - $frmForm = new CForm("users.php"); + $frmForm->AddItem($cmbConf); $frmForm->AddItem(SPACE."|".SPACE); - $frmForm->AddItem($btnNew); - show_header2(S_CONFIGURATION_OF_USERS_AND_USER_GROUPS, $frmForm); + $frmForm->AddItem($btnNew = new CButton("form",($_REQUEST["config"] == 0) ? S_CREATE_USER : S_CREATE_GROUP)); + show_table_header(S_CONFIGURATION_OF_USERS_AND_USER_GROUPS, $frmForm); echo BR; ?> <?php if($_REQUEST["config"]==0) { - if(!isset($_REQUEST["form"])) + if(isset($_REQUEST["form"])) { + insert_user_form(get_request("userid",null)); + } + else + { + $form = new CForm(); + $form->SetName('users'); + show_table_header(S_USERS_BIG); $table=new CTableInfo(S_NO_USERS_DEFINED); - $table->setHeader(array(S_ID,S_ALIAS,S_NAME,S_SURNAME,S_IS_ONLINE_Q,S_ACTIONS)); + $table->setHeader(array( + array( new CCheckBox("all_users",NULL, + "CheckAll('".$form->GetName()."','all_users');"), + S_ALIAS + ), + S_NAME,S_SURNAME,S_USER_TYPE,S_GROUPS,S_IS_ONLINE_Q)); - $db_users=DBselect("select userid,alias,name,surname ". - " from users where mod(userid,100)=".$ZBX_CURNODEID. + $db_users=DBselect("select userid,alias,name,surname,type,autologout ". + " from users where ".DBid2nodeid('userid')."=".$ZBX_CURNODEID. " order by alias"); while($db_user=DBfetch($db_users)) { - if(!check_right("User","R",$db_user["userid"])) continue; - - $alias = new CLink($db_user["alias"], - "users.php?form=update".url_param("config"). - "&userid=".$db_user["userid"]."#form", 'action'); - - $db_sessions = DBselect("select count(*) as count from sessions". - " where userid=".$db_user["userid"]." and lastaccess-600<".time()); + $db_sessions = DBselect("select count(*) as count, max(s.lastaccess) as lastaccess". + " from sessions s, users u". + " where s.userid=".$db_user["userid"]." and s.userid=u.userid and (s.lastaccess+u.autologout)>=".time()); $db_ses_cnt=DBfetch($db_sessions); - if($db_ses_cnt["count"]>0) - $online=new CCol(S_YES,"enabled"); + + if($db_ses_cnt["count"]>0 || $db_user["autologout"] == 0) + $online=new CCol(S_YES.' ('.date('r',$db_ses_cnt['lastaccess']).')',"enabled"); else $online=new CCol(S_NO,"disabled"); - - if(check_right("User","U",$db_user["userid"])) - { - $actions = S_MEDIA; - if(get_media_count_by_userid($db_user["userid"])>0) - { - $actions = bfirst($actions); - } - $actions = new CLink($actions,"media.php?userid=".$db_user["userid"]); - } - else - { - $actions=S_CHANGE.SPACE."-".SPACE.S_MEDIA; - } + + $user_groups = array(); + $db_groups = DBselect("select g.name from usrgrp g, users_groups ug". + " where g.usrgrpid=ug.usrgrpid and ug.userid=".$db_user['userid']); + while($db_group = DBfetch($db_groups)) + array_push($user_groups,$db_group['name']); + $table->addRow(array( - $db_user["userid"], - $alias, + array( + new CCheckBox("group_userid[]",NULL,NULL,$db_user["userid"]), + new CLink($db_user["alias"], + "users.php?form=update".url_param("config"). + "&userid=".$db_user["userid"]."#form", 'action') + ), $db_user["name"], $db_user["surname"], - $online, - $actions + user_type2str($db_user['type']), + implode(BR,$user_groups), + $online )); } - $table->show(); - } - else - { - insert_user_form(get_request("userid",NULL)); + $table->SetFooter(new CCol(new CButton('delete_selected',S_DELETE_SELECTED, + "return Confirm('".S_DELETE_SELECTED_USERS_Q."');"))); - if(isset($_REQUEST["userid"])) - { - echo BR; - show_table_header("USER PERMISSIONS"); - - $table = new CTableInfo(); - $table->setHeader(array(S_PERMISSION,S_RIGHT,S_RESOURCE_NAME,S_ACTIONS)); - - $db_rights = DBselect("select rightid,name,permission,id from rights ". - "where userid=".$_REQUEST["userid"]." order by name,permission,id"); - while($db_right = DBfetch($db_rights)) - { - if($db_right["permission"]=="R") $permission=S_READ_ONLY; - else if($db_right["permission"]=="U") $permission=S_READ_WRITE; - else if($db_right["permission"]=="H") $permission=S_HIDE; - else if($db_right["permission"]=="A") $permission=S_ADD; - else $permission=$db_right["permission"]; - - $actions= new CLink( - S_DELETE, - "users.php?".url_param("userid")."&rightid=".$db_right["rightid"]. - "®ister=delete+permission".url_param("form"). - url_param("config")."#form"); - - $table->addRow(array( - $db_right["name"], - $permission, - get_resource_name($db_right["name"],$db_right["id"]), - $actions - )); - } - $table->show(); - - echo BR; - - insert_permissions_form(); - } + $form->AddItem($table); + $form->show(); } } elseif($_REQUEST["config"]==1) { - if(!isset($_REQUEST["form"])) + if(isset($_REQUEST["form"])) + { + insert_usergroups_form(); + } + else { show_table_header(S_USER_GROUPS_BIG); - + $form = new CForm(); + $table = new CTableInfo(S_NO_USER_GROUPS_DEFINED); - $table->setHeader(array(S_ID,S_NAME,S_MEMBERS)); + $table->setHeader(array( + array( new CCheckBox("all_groups",NULL, + "CheckAll('".$form->GetName()."','all_groups');"), + S_NAME), + S_MEMBERS)); $result=DBselect("select usrgrpid,name from usrgrp". - " where mod(usrgrpid,100)=".$ZBX_CURNODEID. + " where ".DBid2nodeid('usrgrpid')."=".$ZBX_CURNODEID. " order by name"); while($row=DBfetch($result)) { - if(!check_right("User group","R",$row["usrgrpid"])) continue; + $users = array(); - $name = new CLink( - $row["name"], - "users.php?".url_param("config")."&form=update". - "&usrgrpid=".$row["usrgrpid"]."#form", 'action'); - - $users=SPACE; - - $db_users=DBselect("select distinct u.alias from users u,users_groups ug ". + $db_users=DBselect("select distinct u.alias,u.userid from users u,users_groups ug ". "where u.userid=ug.userid and ug.usrgrpid=".$row["usrgrpid"]. " order by alias"); - if($db_user=DBfetch($db_users)) $users .= $db_user["alias"]; - while($db_user=DBfetch($db_users)) $users .= ", ".$db_user["alias"]; + while($db_user=DBfetch($db_users)) $users[$db_user['userid']] = $db_user["alias"]; + if(isset($users[$USER_DETAILS['userid']])) continue; $table->addRow(array( - $row["usrgrpid"], - $name, - $users)); + array( + new CCheckBox("group_groupid[]",NULL,NULL,$row["usrgrpid"]), + $alias = new CLink($row["name"], + "users.php?form=update".url_param("config"). + "&usrgrpid=".$row["usrgrpid"]."#form", 'action') + ), + implode(', ',$users))); } - $table->show(); - } - else - { - insert_usergroups_form(isset($_REQUEST["usrgrpid"]) ? $_REQUEST["usrgrpid"] : NULL); + $table->SetFooter(new CCol(new CButton('delete_selected',S_DELETE_SELECTED, + "return Confirm('".S_DELETE_SELECTED_GROUPS_Q."');"))); + + $form->AddItem($table); + $form->Show(); } } ?> <?php - show_page_footer(); + +include_once "include/page_footer.php" + ?> |
