<?xml version="1.0" encoding="UTF-8"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements.  See the NOTICE file
   distributed with this work for additional information
   regarding copyright ownership.  The ASF licenses this file
   to you under the Apache License, Version 2.0 (the
   "License"); you may not use this file except in compliance
   with the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing,
   software distributed under the License is distributed on an
   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   KIND, either express or implied.  See the License for the
   specific language governing permissions and limitations
   under the License.
-->
<project basedir="." default="all" name="Fortress Sample Data">
    <taskdef classname="org.apache.directory.fortress.core.ant.FortressAntTask" name="FortressAdmin" >
        <classpath path="${java.class.path}"/>
    </taskdef>

    <target name="all">
        <FortressAdmin>

            <updconfig>
                <config props="config.realm:DEFAULT"/>
                <!-- if role name matches this props's name, that role may only be activated
                 when the user has a matching property.  That constraint will be passed in user.getPropName(value).
                 constraint name must match user's property for that role -->
                <config props="oamrole1:locale"/>
                <config props="oamrole2:locale"/>
                <config props="oamrole3:locale"/>
            </updconfig>

            <adduser>
                <user userId="curly"
                      description="Test Location Constraint on User Role Assignments"
                      ou="foo"
                      userProps="oamrole1:locale1,abc,def,ghi$oamrole2:locale3,jkl,mno$oamrole3:locale2,pqr,stu" />

                <user userId="moe"
                      description="Test Location Constraint on User Role Assignments"
                      ou="foo"
                      userProps="oamrole2:locale1" />

                <user userId="larry"
                      description="Test Location Constraint on User Role Assignments"
                      ou="foo"
                      userProps="oamrole3:locale3" />
            </adduser>

            <adduserrole>
                <userrole userId="curly" name="oamrole1"/>
                <userrole userId="curly" name="oamrole2"/>
                <userrole userId="curly" name="oamrole3"/>
                <userrole userId="curly" name="oamrole4"/>
                <userrole userId="curly" name="oamrole5"/>
                <userrole userId="curly" name="oamrole6"/>
                <userrole userId="moe"   name="oamrole2"/>
                <userrole userId="larry" name="oamrole3"/>
            </adduserrole>

            <addorgunit>
                <orgunit name="foo" typeName="USER" description="Test Locale Constraints"/>
            </addorgunit>

        </FortressAdmin>
    </target>
</project>