index a32f07da647664216c4cd799b4ebecd6208cbefe..57d1fc3036033e49498fc9f418e9594d569ccc0f 100644 (file)
foreach($aclc[$dn] as $idx => $type){
$interresting= FALSE;
- /* No members? This is good for all users... */
+ /* No members? This ACL rule is deactivated ... */
if (!count($type['members'])){
- $interresting= TRUE;
+ $interresting= FALSE;
} else {
/* Inspect members... */
if (preg_replace('/^U:/', '', $grp) == $this->dn){
$interresting= TRUE;
}
+
+ /* Wildcard? */
+ if (preg_match('/^G:\*/', $grp)){
+ $interresting= TRUE;
+ }
}
}
}
+ /* Returns an array containing all target objects we've permssions on.
+ */
+ function get_acl_target_objects()
+ {
+ return(array_keys($this->ACLperPath));
+ }
+
+
function get_category_permissions($dn, $category, $any_acl = FALSE)
{
- return(@$this->get_permissions($dn,$category.'/0',""));
+ return($this->get_permissions($dn,$category.'/0',""));
}
return($ret);
}
+ /* Check for correct category and class values... */
+ if(strpos($object,'/') !== FALSE){
+ list($aclCategory, $aclClass) = split("/", $object);
+ }else{
+ $aclCategory = $object;
+ }
+ if(!isset($this->ocMapping[$aclCategory])){
+ trigger_error("Invalid ACL category '".$aclCategory."'! ({$object})");
+ msg_dialog::display(_("Error"), "Invalid ACL category '".$aclCategory."'! ({$object})", ERROR_DIALOG);
+ return("");
+ }elseif(isset($aclClass) && !in_array($aclClass, $this->ocMapping[$aclCategory])){
+ trigger_error("Invalid ACL class '".$aclClass."'! ({$object})");
+ msg_dialog::display(_("Error"), "Invalid ACL class '".$aclClass."'! ({$object})", ERROR_DIALOG);
+ return("");
+ }
+
/* Detect the set of ACLs we have to check for this object
*/
$adn = $dn;
$acl= array("r" => "", "w" => "", "c" => "", "d" => "", "m" => "", "a" => "");
/* Build dn array */
- $path= split(',', $dn);
+ $path= explode(',', $dn);
$path= array_reverse($path);
/* Walk along the path to evaluate the acl */