<?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.
-->
<entity-engine-xml>
    <SecurityPermission permissionId="BIRT_ADMIN" description="ALL Birt component operations"/>
    <SecurityPermission permissionId="BIRT_CREATE" description="Create report from master"/>
    <SecurityPermission permissionId="BIRT_UPDATE" description="Update operations for reports"/>
    <SecurityPermission permissionId="BIRT_DELETE" description="Delete reports"/>
    <SecurityPermission permissionId="BIRT_VIEW" description="View and use all birt reports"/>

    <SecurityGroup groupId="BIRTADMIN" description="Birt - admin"/>
    <SecurityGroup groupId="BIRTUSER" description="Birt - user"/>

    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="BIRT_CREATE"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="BIRT_UPDATE"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="BIRT_DELETE"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="BIRT_VIEW"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="OFBTOOLS_VIEW"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="CONTENTMGR_ROLE_VIEW"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="CONTENTMGR_VIEW"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="CONTENTMGR_ROLE_CREATE"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="CONTENTMGR_CREATE"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="CONTENTMGR_ROLE_UPDATE"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="CONTENTMGR_UPDATE"/>
    <SecurityGroupPermission groupId="BIRTADMIN" permissionId="CONTENTMGR_DELETE"/>

    <SecurityGroupPermission groupId="BIRTUSER" permissionId="BIRT_VIEW"/>
    <SecurityGroupPermission groupId="BIRTUSER" permissionId="OFBTOOLS_VIEW"/>

    <SecurityGroupPermission groupId="FULLADMIN" permissionId="BIRT_CREATE"/>
    <SecurityGroupPermission groupId="FULLADMIN" permissionId="BIRT_UPDATE"/>
    <SecurityGroupPermission groupId="FULLADMIN" permissionId="BIRT_DELETE"/>
    <SecurityGroupPermission groupId="FULLADMIN" permissionId="BIRT_VIEW"/>
    <SecurityGroupPermission groupId="FLEXADMIN" permissionId="BIRT_CREATE"/>
    <SecurityGroupPermission groupId="FLEXADMIN" permissionId="BIRT_UPDATE"/>
    <SecurityGroupPermission groupId="FLEXADMIN" permissionId="BIRT_DELETE"/>
    <SecurityGroupPermission groupId="FLEXADMIN" permissionId="BIRT_VIEW"/>
</entity-engine-xml>