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

    <Role name="PrivilegeAdmin">
        <Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
            <Allow>li.strolch.service.privilege.users.PrivilegeUpdateUserService</Allow>
            <Allow>li.strolch.service.privilege.users.PrivilegeUpdateUserRolesService</Allow>
            <Allow>li.strolch.service.privilege.users.PrivilegeSetUserPasswordService</Allow>
            <Allow>li.strolch.service.privilege.users.PrivilegeSetUserLocaleService</Allow>
            <Allow>li.strolch.service.privilege.users.PrivilegeRemoveUserService</Allow>
            <Allow>li.strolch.service.privilege.users.PrivilegeRemoveRoleFromUserService</Allow>
            <Allow>li.strolch.service.privilege.users.PrivilegeAddUserService</Allow>
            <Allow>li.strolch.service.privilege.users.PrivilegeAddRoleToUserService</Allow>
            <Allow>li.strolch.service.privilege.roles.PrivilegeUpdateRoleService</Allow>
            <Allow>li.strolch.service.privilege.roles.PrivilegeRemoveRoleService</Allow>
            <Allow>li.strolch.service.privilege.roles.PrivilegeRemovePrivilegeFromRoleService</Allow>
            <Allow>li.strolch.service.privilege.roles.PrivilegeAddRoleService</Allow>
            <Allow>li.strolch.service.privilege.roles.PrivilegeAddOrReplacePrivilegeOnRoleService</Allow>
        </Privilege>
        <Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeRemoveUser" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="InvalidateSession" policy="UserSessionAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="RequirePasswordChange" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeSetUserLocale" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeAction" policy="DefaultPrivilege">
            <Allow>Reload</Allow>
            <Allow>GetPolicies</Allow>
            <Allow>Persist</Allow>
            <Allow>GetCertificates</Allow>
            <Allow>PersistSessions</Allow>
        </Privilege>
        <Privilege name="PrivilegeGetUser" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeSetUserState" policy="UserAccessPrivilege">
            <Deny>SYSTEM</Deny>
            <Allow>DISABLED</Allow>
            <Allow>ENABLED</Allow>
        </Privilege>
        <Privilege name="PrivilegeAddRoleToUser" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeGetRole" policy="RoleAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="GetSession" policy="UserSessionAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeModifyUser" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeRemoveRole" policy="RoleAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeRemoveRoleFromUser" policy="UserAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeModifyRole" policy="RoleAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
        <Privilege name="PrivilegeAddRole" policy="RoleAccessPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
    </Role>

    <Role name="AppUser">
        <Privilege name="li.strolch.privilege.test.model.TestRestrictable" policy="DefaultPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
    </Role>

    <Role name="MyRole">
        <Privilege name="Foo" policy="DefaultPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
    </Role>

    <Role name="MyRole2">
        <Privilege name="Foo" policy="DefaultPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
    </Role>

    <Role name="system_admin_privileges">
        <Privilege name="li.strolch.privilege.handler.SystemAction" policy="DefaultPrivilege">
            <Allow>li.strolch.privilege.test.model.TestSystemUserAction</Allow>
            <Deny>li.strolch.privilege.test.model.TestSystemUserActionDeny</Deny>
        </Privilege>
        <Privilege name="li.strolch.privilege.test.model.TestSystemRestrictable" policy="DefaultPrivilege">
            <AllAllowed>true</AllAllowed>
        </Privilege>
    </Role>

    <Role name="restrictedRole">
        <Privilege name="li.strolch.privilege.handler.SystemAction" policy="DefaultPrivilege">
            <Allow>hello</Allow>
            <Deny>goodbye</Deny>
        </Privilege>
    </Role>

</Roles>