X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fclass_acl.inc;h=9bf8e623825c0b6f49257a732a9d599cff2689ca;hb=28ae00a52f184c2e0818500fafc38280e44f9efb;hp=4fbdbe962f21d6e956a880730bf62765e58446a0;hpb=0f0cdd3a98e4a9c1fb8c3dde2d2db000f28b44c5;p=gosa.git diff --git a/include/class_acl.inc b/include/class_acl.inc index 4fbdbe962..9bf8e6238 100644 --- a/include/class_acl.inc +++ b/include/class_acl.inc @@ -113,7 +113,7 @@ class acl extends plugin $tmp= get_global('plist'); $plist= $tmp->info; $cats = array(); - if (isset($this->parent) && $this->parent != NULL){ + if (isset($this->parent) && $this->parent !== NULL){ $oc= array(); foreach ($this->parent->by_object as $key => $obj){ $oc= array_merge($oc, $obj->objectclasses); @@ -397,7 +397,7 @@ class acl extends plugin if ($this->dialogState == 'head'){ /* Draw list */ - $aclList= new DivSelectBox("aclList"); + $aclList= new divSelectBox("aclList"); $aclList->SetHeight(450); /* Fill in entries */ @@ -418,7 +418,7 @@ class acl extends plugin if ($this->dialogState == 'create'){ /* Draw list */ - $aclList= new DivSelectBox("aclList"); + $aclList= new divSelectBox("aclList"); $aclList->SetHeight(150); /* Add settings for all categories to the (permanent) list */ @@ -554,7 +554,7 @@ class acl extends plugin function buildRoleSelector($list) { - $D_List =new DivSelectBox("Acl_Roles"); + $D_List =new divSelectBox("Acl_Roles"); $selected = $this->aclContents; if(!is_string($this->aclContents) || !isset($list[$this->aclContents])){ @@ -1079,6 +1079,87 @@ class acl extends plugin $this->handle_post_events("remove",array("uid" => $this->uid)); } + + /* Return plugin informations for acl handling */ + function plInfo() + { + return (array( + "plShortName" => _("ACL"), + "plDescription" => _("ACL")._("Access control list").")", + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("acl" => array("description" => _("ACL")." & "._("ACL roles"), + "objectClass" => array("gosaAcl","gosaRole"))), + "plProvidedAcls"=> array( + "cn" => _("Role name"), + "description" => _("Role description")) + + )); + } + + + /* Remove acls defined for $src */ + function remove_acl() + { + $this->remove_acl_for_dn($this->dn); + } + + + /* Remove acls defined for $src */ + function remove_acl_for_dn($src = "") + { + if($src == ""){ + $src = $this->dn; + } + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gosaAcl)(gosaAclEntry=*".base64_encode($src)."*))",array("gosaAclEntry","dn")); + while($attrs = $ldap->fetch()){ + $acl = new acl($this->config,$this->parent,$attrs['dn']); + foreach($acl->gosaAclEntry as $id => $entry){ + foreach($entry['members'] as $m_id => $member){ + if($m_id == "U:".$src){ + unset($acl->gosaAclEntry[$id]['members'][$m_id]); + gosa_log("modify","users/acl",$attrs['dn'],array(),sprintf("Removed acl for user %s on object %s.",$src,$attrs['dn'])); + } + if($m_id == "G:".$src){ + unset($acl->gosaAclEntry[$id]['members'][$m_id]); + gosa_log("modify","groups/acl",$attrs['dn'],array(),sprintf("Removed acl for group %s on object %s.",$src,$attrs['dn'])); + } + } + } + $acl -> save(); + } + } + + function update_acl_membership($src,$dst) + { + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=gosaAcl)(gosaAclEntry=*".base64_encode($src)."*))",array("gosaAclEntry","dn")); + while($attrs = $ldap->fetch()){ + $acl = new acl($this->config,$this->parent,$attrs['dn']); + foreach($acl->gosaAclEntry as $id => $entry){ + foreach($entry['members'] as $m_id => $member){ + if($m_id == "U:".$src){ + unset($acl->gosaAclEntry[$id]['members'][$m_id]); + $new = "U:".$dst; + $acl->gosaAclEntry[$id]['members'][$new] = $new; + gosa_log("modify","users/acl",$attrs['dn'],array(),sprintf("Updated acl for user %s on object %s.",$src,$attrs['dn'])); + } + if($m_id == "G:".$src){ + unset($acl->gosaAclEntry[$id]['members'][$m_id]); + $new = "G:".$dst; + $acl->gosaAclEntry[$id]['members'][$new] = $new; + gosa_log("modify","groups/acl",$attrs['dn'],array(),sprintf("Updated acl for group %s on object %s.",$src,$attrs['dn'])); + } + } + } + $acl -> save(); + } + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: