summaryrefslogtreecommitdiffstats
path: root/frontends/php/include/users.inc.php
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-23 07:34:27 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2006-10-23 07:34:27 +0000
commit28a09ed13e41ddbe5e30d63e92a1f5fb3395ef89 (patch)
tree8281ccd48964ee0dd11c5ea689091fa3cef706fb /frontends/php/include/users.inc.php
parent495799b2aa61aab23d74d7faa110a0cd09d59bf0 (diff)
downloadzabbix-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/include/users.inc.php')
-rw-r--r--frontends/php/include/users.inc.php297
1 files changed, 179 insertions, 118 deletions
diff --git a/frontends/php/include/users.inc.php b/frontends/php/include/users.inc.php
index 0bdb19a6..5c57c1d5 100644
--- a/frontends/php/include/users.inc.php
+++ b/frontends/php/include/users.inc.php
@@ -19,69 +19,121 @@
**/
?>
<?php
+ function user_type2str($user_type_int)
+ {
+ $str_user_type[USER_TYPE_ZABBIX_USER] = S_ZABBIX_USER;
+ $str_user_type[USER_TYPE_ZABBIX_ADMIN] = S_ZABBIX_ADMIN;
+ $str_user_type[USER_TYPE_SUPPER_ADMIN] = S_SUPPER_ADMIN;
+
+ if(isset($str_user_type[$user_type_int]))
+ return $str_user_type[$user_type_int];
+
+ return S_UNCNOWN;
+ }
+
# Add User definition
- function add_user($name,$surname,$alias,$passwd,$url,$autologout,$lang,$refresh)
+ function add_user($name,$surname,$alias,$passwd,$url,$autologout,$lang,$refresh,$user_type,$user_groups,$user_medias)
{
- if(!check_right("User","A",0))
+ global $USER_DETAILS;
+ global $ZBX_CURNODEID;
+
+ if($USER_DETAILS['type'] != USER_TYPE_SUPPER_ADMIN)
{
error("Insufficient permissions");
return 0;
}
+SDI('pass: '.$passwd);
+SDI('groups: '.$user_groups);
- if($alias==""){
- error("Incorrect Alias name");
+ if(DBfetch(DBexecute("select * from users where alias=".zbx_dbstr($alias)." and ".DBid2nodeid('userid')."=".$ZBX_CURNODEID)))
+ {
+ error('User "'.$alias.'" already exists');
return 0;
}
- $sql="select * from users where alias=".zbx_dbstr($alias);
- $result=DBexecute($sql);
- if(DBfetch($result))
+ $userid = get_dbid("users","userid");
+
+ $result = DBexecute('insert into users (userid,name,surname,alias,passwd,url,autologout,lang,refresh,type)'.
+ ' values ('.$userid.','.zbx_dbstr($name).','.zbx_dbstr($surname).','.zbx_dbstr($alias).','.
+ zbx_dbstr(md5($passwd)).','.zbx_dbstr($url).','.$autologout.','.zbx_dbstr($lang).','.$refresh.','.$user_type.')');
+
+ if($result)
{
- error("User '$alias' already exists");
- return 0;
+ DBexecute('delete from users_groups where userid='.$userid);
+ foreach($user_groups as $groupid => $grou_pname)
+ {
+ $users_groups_id = get_dbid("users_groups","id");
+ $result = DBexecute('insert into users_groups (id,usrgrpid,userid)'.
+ 'values('.$users_groups_id.','.$groupid.','.$userid.')');
+
+ if($result == false) break;
+ }
+ if($result)
+ {
+ DBexecute('delete from media where userid='.$userid);
+ foreach($user_medias as $mediaid => $media_data)
+ {
+ $mediaid = get_dbid("media","mediaid");
+ $result = DBexecute('insert into media (mediaid,userid,mediatypeid,sendto,active,severity,period)'.
+ ' values ('.$mediaid.','.$userid.','.$media_data['mediatypeid'].','.
+ zbx_dbstr($media_data['sendto']).','.$media_data['active'].','.$media_data['severity'].','.
+ zbx_dbstr($media_data['period']).')');
+
+ if($result == false) break;
+ }
+ }
}
-
- $passwd=md5($passwd);
- $userid = get_dbid("users","userid");
- $sql="insert into users (userid,name,surname,alias,passwd,url,autologout,lang,refresh) values ($userid,".zbx_dbstr($name).",".zbx_dbstr($surname).",".zbx_dbstr($alias).",".zbx_dbstr($passwd).",".zbx_dbstr($url).",$autologout,".zbx_dbstr($lang).",$refresh)";
- DBexecute($sql);
- return $userid;
+
+ return $result;
}
# Update User definition
- function update_user($userid,$name,$surname,$alias,$passwd, $url,$autologout,$lang,$refresh)
+ function update_user($userid,$name,$surname,$alias,$passwd, $url,$autologout,$lang,$refresh,$user_type,$user_groups,$user_medias)
{
- if(!check_right("User","U",$userid))
- {
- error("Insufficient permissions");
- return 0;
- }
-
- if($alias==""){
- error("incorrect alias name");
- return 0;
- }
+ global $ZBX_CURNODEID;
- $sql="select * from users where alias=".zbx_dbstr($alias)." and userid<>$userid";
- $result=DBexecute($sql);
- if(DBfetch($result))
+ if(DBfetch(DBexecute("select * from users where alias=".zbx_dbstr($alias).
+ " and userid<>$userid and ".DBid2nodeid('userid')."=".$ZBX_CURNODEID)))
{
error("User '$alias' already exists");
return 0;
}
-
- if($passwd=="")
- {
- $sql="update users set name=".zbx_dbstr($name).",surname=".zbx_dbstr($surname).",alias=".zbx_dbstr($alias).",url=".zbx_dbstr($url).",autologout=$autologout,lang=".zbx_dbstr($lang).",refresh=$refresh where userid=$userid";
- }
- else
+
+ $result = DBexecute("update users set name=".zbx_dbstr($name).",surname=".zbx_dbstr($surname).","."alias=".zbx_dbstr($alias).
+ (isset($passwd) ? (',passwd='.zbx_dbstr(md5($passwd))) : '').
+ ",url=".zbx_dbstr($url).","."autologout=$autologout,lang=".zbx_dbstr($lang).",refresh=$refresh,".
+ "type=$user_type where userid=$userid");
+
+ if($result)
{
- $passwd=md5($passwd);
- $sql="update users set name=".zbx_dbstr($name).",surname=".zbx_dbstr($surname).",alias=".zbx_dbstr($alias).",passwd=".zbx_dbstr($passwd).",url=".zbx_dbstr($url).",autologout=$autologout,lang=".zbx_dbstr($lang).",refresh=$refresh where userid=$userid";
+ DBexecute('delete from users_groups where userid='.$userid);
+ foreach($user_groups as $groupid => $grou_pname)
+ {
+ $users_groups_id = get_dbid("users_groups","id");
+ $result = DBexecute('insert into users_groups (id,usrgrpid,userid)'.
+ 'values('.$users_groups_id.','.$groupid.','.$userid.')');
+
+ if($result == false) break;
+ }
+ if($result)
+ {
+ DBexecute('delete from media where userid='.$userid);
+ foreach($user_medias as $mediaid => $media_data)
+ {
+ $mediaid = get_dbid("media","mediaid");
+ $result = DBexecute('insert into media (mediaid,userid,mediatypeid,sendto,active,severity,period)'.
+ ' values ('.$mediaid.','.$userid.','.$media_data['mediatypeid'].','.
+ zbx_dbstr($media_data['sendto']).','.$media_data['active'].','.$media_data['severity'].','.
+ zbx_dbstr($media_data['period']).')');
+
+ if($result == false) break;
+ }
+ }
}
- return DBexecute($sql);
+
+ return $result;
}
# Update User Profile
@@ -92,71 +144,65 @@
if($userid!=$USER_DETAILS["userid"])
{
- error("Insufficient permissions");
- return 0;
+ access_deny();
}
- if($passwd=="")
- {
- $sql="update users set url=".zbx_dbstr($url).",autologout=$autologout,lang=".zbx_dbstr($lang).",refresh=$refresh where userid=$userid";
- }
- else
- {
- $passwd=md5($passwd);
- $sql="update users set passwd=".zbx_dbstr($passwd).",url=".zbx_dbstr($url).",autologout=$autologout,lang=".zbx_dbstr($lang).",refresh=$refresh where userid=$userid";
- }
- return DBexecute($sql);
+ return DBexecute("update users set url=".zbx_dbstr($url).",autologout=$autologout,lang=".zbx_dbstr($lang).
+ (isset($passwd) ? (',passwd='.zbx_dbstr(md5($passwd))) : '').
+ ",refresh=$refresh where userid=$userid");
}
- # Add permission
+ # Delete User definition
- function add_permission($userid,$right,$permission,$id)
+ function delete_user($userid)
{
- $sql="insert into rights (userid,name,permission,id) values ($userid,".zbx_dbstr($right).",".zbx_dbstr($permission).",$id)";
- return DBexecute($sql);
- }
- function get_usergroup_by_groupid($groupid)
- {
- $result=DBselect("select * from usrgrp where usrgrpid=".$groupid);
- $row=DBfetch($result);
- if($row)
+ if(DBfetch(DBselect('select * from users where userid='.$userid.' and alias=\'guest\'')))
{
- return $row;
+ error("Cannot delete user 'guest'");
+ return false;
}
- error("No user groups with usrgrpid=[$groupid]");
- return FALSE;
+
+ while($row=DBfetch(DBexecute('select actionid from actions where userid='.$userid)))
+ {
+ $result = delete_action($row["actionid"]);
+ if(!$result) return $result;
+ }
+
+ $result = DBexecute('delete from media where userid='.$userid);
+ if(!$result) return $result;
+
+ $result = DBexecute('delete from profiles where userid='.$userid);
+ if(!$result) return $result;
+
+ $result = DBexecute('delete from users_groups where userid='.$userid);
+ if(!$result) return $result;
+
+ $result = DBexecute('delete from users where userid='.$userid);
+
+ return $result;
}
+
function get_user_by_userid($userid)
{
- $sql="select * from users where userid=$userid";
- $result=DBselect($sql);
- $row=DBfetch($result);
- if($row)
+ if($row = DBfetch(DBselect("select * from users where userid=$userid")))
{
return $row;
}
- error("No user with itemid=[$userid]");
+ error("No user with id [$userid]");
return false;
}
- function add_user_group($name,$users=array())
+/**************************
+ USER GROUPS
+**************************/
+
+ function add_user_group($name,$users=array(),$rights=array())
{
- if(!check_right("Host","A",0))
- {
- error("Insufficient permissions");
- return 0;
- }
-
- if($name==""){
- error("Incorrect group name");
- return 0;
- }
+ global $ZBX_CURNODEID;
- $sql="select * from usrgrp where name=".zbx_dbstr($name);
- $result=DBexecute($sql);
- if(DBfetch($result))
+ if(DBfetch(DBexecute("select * from usrgrp where name=".zbx_dbstr($name)." and ".DBid2nodeid('usrgrpid')."=".$ZBX_CURNODEID)))
{
error("Group '$name' already exists");
return 0;
@@ -164,70 +210,85 @@
$usrgrpid=get_dbid("usrgrp","usrgrpid");
- $sql="insert into usrgrp (usrgrpid,name) values ($usrgrpid,".zbx_dbstr($name).")";
- $result=DBexecute($sql);
- if(!$result)
+ $result=DBexecute("insert into usrgrp (usrgrpid,name) values ($usrgrpid,".zbx_dbstr($name).")");
+ if(!$result) return $result;
+
+ $result=DBexecute("delete from users_groups where usrgrpid=".$usrgrpid);
+ foreach($users as $userid => $name)
{
- return $result;
+ $id = get_dbid('users_groups','id');
+ $result=DBexecute('insert into users_groups (id,usrgrpid,userid) values ('.$id.','.$usrgrpid.','.$userid.')');
+ if(!$result) return $result;
+ }
+
+ $result=DBexecute("delete from rights where groupid=".$usrgrpid);
+ foreach($rights as $right)
+ {
+ $id = get_dbid('rights','rightid');
+ $result=DBexecute('insert into rights (rightid,groupid,type,permission,id)'.
+ ' values ('.$id.','.$usrgrpid.','.$right['type'].','.$right['permission'].','.$right['id'].')');
+ if(!$result) return $result;
}
-
- update_user_groups($usrgrpid,$users);
return $result;
}
- function update_user_group($usrgrpid,$name,$users=array())
+ function update_user_group($usrgrpid,$name,$users=array(),$rights=array())
{
- if(!check_right("Host","U",0))
- {
- error("Insufficient permissions");
- return 0;
- }
-
- if($name==""){
- error("Incorrect group name");
- return 0;
- }
+ global $ZBX_CURNODEID;
- $sql="select * from usrgrp where name=".zbx_dbstr($name)." and usrgrpid<>$usrgrpid";
- $result=DBexecute($sql);
- if(DBfetch($result))
+ if(DBfetch(DBexecute("select * from usrgrp where name=".zbx_dbstr($name).
+ " and usrgrpid<>".$usrgrpid." and ".DBid2nodeid('usrgrpid')."=".$ZBX_CURNODEID)))
{
error("Group '$name' already exists");
return 0;
}
- $sql="update usrgrp set name=".zbx_dbstr($name)." where usrgrpid=$usrgrpid";
- $result=DBexecute($sql);
+ $result=DBexecute("update usrgrp set name=".zbx_dbstr($name)." where usrgrpid=$usrgrpid");
if(!$result)
{
return $result;
}
- update_user_groups($usrgrpid,$users);
+ $result=DBexecute("delete from users_groups where usrgrpid=".$usrgrpid);
+ foreach($users as $userid => $name)
+ {
+ $id = get_dbid('users_groups','id');
+ $result=DBexecute('insert into users_groups (id,usrgrpid,userid) values ('.$id.','.$usrgrpid.','.$userid.')');
+ if(!$result) return $result;
+ }
+
+ $result=DBexecute("delete from rights where groupid=".$usrgrpid);
+ foreach($rights as $right)
+ {
+ $id = get_dbid('rights','rightid');
+ $result=DBexecute('insert into rights (rightid,groupid,type,permission,id)'.
+ ' values ('.$id.','.$usrgrpid.','.$right['type'].','.$right['permission'].','.$right['id'].')');
+ if(!$result) return $result;
+ }
return $result;
}
function delete_user_group($usrgrpid)
{
- $sql="delete from users_groups where usrgrpid=$usrgrpid";
- DBexecute($sql);
- $sql="delete from usrgrp where usrgrpid=$usrgrpid";
- return DBexecute($sql);
- }
+ $result = DBexecute("delete from rights where groupid=$usrgrpid");
+ if(!$result) return $result;
- function update_user_groups($usrgrpid,$users=array())
- {
- $count=count($users);
+ $result = DBexecute("delete from users_groups where usrgrpid=$usrgrpid");
+ if(!$result) return $result;
- $sql="delete from users_groups where usrgrpid=$usrgrpid";
- DBexecute($sql);
+ $result = DBexecute("delete from usrgrp where usrgrpid=$usrgrpid");
+ return $result;
+ }
- for($i=0;$i<$count;$i++)
+ function get_group_by_usrgrpid($usrgrpid)
+ {
+ if($row = DBfetch(DBselect("select * from usrgrp where usrgrpid=".$usrgrpid)))
{
- $sql="insert into users_groups (usrgrpid,userid) values ($usrgrpid,".$users[$i].")";
- DBexecute($sql);
+ return $row;
}
+ error("No user groups with id [$usrgrpid]");
+ return FALSE;
}
?>