<?xml version = "1.0" encoding="UTF-8"?>

<ObjectList>
    <!-- Als erstes legen wir eine Gruppe an. 
    Alle Mitglieder dieser Gruppe sollen in unserer ACL das Lese-Recht besitzen (READ). -->
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung_READ}">
        <Name>GRP_agoscript-Schulung_READ</Name>
        <!-- Als Member ordnen wir hier unseren Benutzer partner_a.user zu. -->
        <Members>
            <Ref RefType="Name" ClassName="DirectoryUserObject">partner_a.user</Ref>
        </Members>
        <AddToFolder>/agorum/roi/Administration/Group/agoscript-Schulung</AddToFolder>
        <NoErrorIfExist />
    </DirectoryGroupObject>
    
    <!-- Als zweites legen wir eine Gruppe an für ALL. 
    Alle Mitglieder dieser Gruppe sollen in unserer ACL dann das ALL-Recht besitzen (ALL). -->
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung_ALL}">
        <Name>GRP_agoscript-Schulung_ALL</Name>
        <!-- Als Member ordnen wir hier unseren Benutzer partner_a.user zu. -->
        <Members>
            <Ref RefType="Name" ClassName="DirectoryUserObject">partner_a.user</Ref>
        </Members>
        <AddToFolder>/agorum/roi/Administration/Group/agoscript-Schulung</AddToFolder>
        <NoErrorIfExist />
    </DirectoryGroupObject>
    
    <!-- Jetzt werden wir die ACL anlegen, mit der eben definierten Gruppe, die READ-Rechte bekommt: -->
    <CustomAclObject SavePoint="${ACL_agoscript-Schulung}">
        <Name>ACL_agoscript-Schulung</Name>
        <Description>ACL für den Bereich agoscript-Schulung</Description>
        <ACEs>
            <!-- Zuordnen zur Gruppe GRP_agoscript-Schulung_READ -->
            <AccessControlEntryObject>
                <!--   Die Referenz wird über den Namen hergestellt. -->
                <Grantee RefType="Name" ClassName="DirectoryGroupObject">GRP_agoscript-Schulung_READ</Grantee>
                <!-- Hier wird eingestellt, ob die Rechte gesetzt (true) oder entzogen (false) werden. -->
                <Granted>true</Granted>
                <Acl RefType="SavePoint">${ACL_agoscript-Schulung}</Acl>
                <PermissionBundleObjects>
                    <ArrayElement RefType="Name" ClassName="PermissionBundleObject">AG_PB_READ</ArrayElement>
                </PermissionBundleObjects>
            </AccessControlEntryObject>
        </ACEs>
        <AddToFolder>/agorum/roi/Administration/Role/agoscript-Schulung</AddToFolder>
        <NoErrorIfExist />
    </CustomAclObject>
    
    <!-- Jetzt werden wir die ACL updaten, mit der die eben definierte Gruppe, die ALL-Rechte bekommt. -->
    <CustomAclObject>
        <Update RefType="SavePoint">${ACL_agoscript-Schulung}</Update>
        <ACEs>
            <!-- Zuordnung zur Gruppe GRP_agoscript-Schulung_ALL.
            Wir ordnen die Gruppe so zu, das es egal ist, in welcher der Benutzer enthalten ist.
            Der Benutzer hat jetzt immer das höhere Recht.
            In unserem Fall hat der Benutzer READ und ALL, also hat er ALL. -->
            <AccessControlEntryObject>
                <!--   Die Referenz wird über den Namen hergestellt.  -->
                <Grantee RefType="Name" ClassName="DirectoryGroupObject">GRP_agoscript-Schulung_ALL</Grantee>
                <!-- Hier wird eingestellt, ob die Rechte gesetzt (true) oder entzogen (false) werden. -->
                <Granted>true</Granted>
                <Acl RefType="SavePoint">${ACL_agoscript-Schulung}</Acl>
                <PermissionBundleObjects>
                    <ArrayElement RefType="Name" ClassName="PermissionBundleObject">AG_PB_ALL</ArrayElement>
                </PermissionBundleObjects>
            </AccessControlEntryObject>
        </ACEs>
    </CustomAclObject>

    <!-- Jetzt wird diese ACL dem Ordner agoscript-Schulung zugeordnet und durchvererbt.
		Es werden alle ACLs durch die neue ersetzt, die gleich sind wie die ACL des 
    Startordners für die Vererbung. -->
    <FolderObject>
        <Update>/agorum/roi/Files/agoscript-Schulung</Update>
        <!-- Setzen der ACL -->
        <Acl RefType="SavePoint">${ACL_agoscript-Schulung}</Acl>
        <!-- Jetzt noch die SystemOption setzen, dass die ACL vererbt werden soll
			  über alle Folder, wie die bisherige ACL, die bis jetzt gesetzt war. -->
        <InvokeMethod>
            <Method>setSystemOption</Method>
            <Parameter_1 DataType="String" MethodDataType="String">leaveAclToObjectsWithThisAcl</Parameter_1>
            <Parameter_2 DataType="String" MethodDataType="Object">true</Parameter_2>
        </InvokeMethod>
    </FolderObject>
</ObjectList>
