diff options
| author | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-04-02 11:44:34 +0000 |
|---|---|---|
| committer | artem <artem@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2008-04-02 11:44:34 +0000 |
| commit | 908fda905acd739d8d2376ffb33f7e5a63faf26c (patch) | |
| tree | 55f16bf5ae2a95e9dbbf6266f17be864f2d2db32 /frontends/php/include/maps.inc.php | |
| parent | 82e68eabae069748d6691cab742f5fde436a56cb (diff) | |
| download | zabbix-908fda905acd739d8d2376ffb33f7e5a63faf26c.tar.gz zabbix-908fda905acd739d8d2376ffb33f7e5a63faf26c.tar.xz zabbix-908fda905acd739d8d2376ffb33f7e5a63faf26c.zip | |
- improvements in permissions (Artem)
git-svn-id: svn://svn.zabbix.com/trunk@5577 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'frontends/php/include/maps.inc.php')
| -rw-r--r-- | frontends/php/include/maps.inc.php | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/frontends/php/include/maps.inc.php b/frontends/php/include/maps.inc.php index ceb490d0..d598ba76 100644 --- a/frontends/php/include/maps.inc.php +++ b/frontends/php/include/maps.inc.php @@ -83,20 +83,18 @@ $result = false; - if($db_result = DBselect('select * from sysmaps_elements where sysmapid='.$sysmapid. - ' and '.DBin_node('sysmapid', get_current_nodeid($perm)))) + if($db_result = DBselect('SELECT * '. + ' FROM sysmaps_elements '. + ' WHERE sysmapid='.$sysmapid. + ' AND '.DBin_node('sysmapid', get_current_nodeid($perm)))) { $result = true; - - $denyed_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY, PERM_MODE_LT); + $available_hosts = get_accessible_hosts_by_user($USER_DETAILS,PERM_READ_ONLY); - while(($se_data = DBfetch($db_result)) && $result) - { - switch($se_data['elementtype']) - { + while(($se_data = DBfetch($db_result)) && $result){ + switch($se_data['elementtype']){ case SYSMAP_ELEMENT_TYPE_HOST: - if(uint_in_array($se_data['elementid'],explode(',',$denyed_hosts))) - { + if(!uint_in_array($se_data['elementid'],explode(',',$available_hosts))){ $result = false; } break; @@ -104,21 +102,26 @@ $result &= sysmap_accessiable($se_data['elementid'], PERM_READ_ONLY); break; case SYSMAP_ELEMENT_TYPE_TRIGGER: - if( DBfetch(DBselect('select triggerid from triggers where triggerid='.$se_data['elementid'])) && - !DBfetch(DBselect('SELECT DISTINCT t.*'. + if(DBfetch(DBselect('SELECT triggerid FROM triggers WHERE triggerid='.$se_data['elementid']))){ + $sql = 'SELECT DISTINCT t.triggerid'. ' FROM triggers t,items i,functions f'. ' WHERE f.itemid=i.itemid '. ' AND t.triggerid=f.triggerid'. - ' AND i.hostid NOT IN ('.$denyed_hosts.') '. - ' AND t.triggerid='.$se_data['elementid']))) - { - $result = false; - } + ' AND i.hostid NOT IN ('.$available_hosts.') '. + ' AND t.triggerid='.$se_data['elementid']; + if(DBfetch(DBselect($sql,1))){ + $result = false; + } + } break; case SYSMAP_ELEMENT_TYPE_HOST_GROUP: - if( DBfetch(DBselect('SELECT groupid FROM groups WHERE groupid='.$se_data['elementid'])) && - uint_in_array($se_data['elementid'],get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY, PERM_MODE_LT, PERM_RES_IDS_ARRAY))) - { + $available_groups = get_accessible_groups_by_user($USER_DETAILS,PERM_READ_ONLY, null, PERM_RES_IDS_ARRAY); + + $sql = 'SELECT groupid '. + ' FROM groups '. + ' WHERE groupid='.$se_data['elementid']; + + if(DBfetch(DBselect($sql,1)) && !uint_in_array($se_data['elementid'],$available_groups)){ $result = false; } break; |
