<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
#*
 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.
*#
<!DOCTYPE dataset SYSTEM "file://torque-security-data.dtd">

<!-- =============================================================================== -->
<!--                                                                                 -->
<!-- Default Values for Admin and normal User                                        -->
<!--                                                                                 -->
<!-- @version $Id: turbine-security-data.xml 615328 2008-01-25 20:25:05Z tv $ -->
<!--                                                                                 -->
<!-- =============================================================================== -->

<dataset name="all">

  <TurbineUser UserId="1"
               UserName="admin"
               Password="password"
               FirstName=""
               LastName="Admin"/>

  <TurbineUser UserId="2"
               UserName="user"
               Password="password"
               FirstName=""
               LastName="User"/>

  <!-- Turbine Permissions -->

  <TurbinePermission PermissionId="1" Name="turbineadmin"/>
  <TurbinePermission PermissionId="2" Name="turbine"/>

  <!-- Turbine Roles -->

  <TurbineRole RoleId="1" Name="turbineadmin"/>
  <TurbineRole RoleId="2" Name="turbineuser"/>

 <!-- Turbine Groups -->

  <TurbineGroup GroupId="1" Name="global"/>
  <TurbineGroup GroupId="2" Name="Turbine"/>

  <TurbineRolePermission RoleId="1" PermissionId="1"/>
  <TurbineRolePermission RoleId="2" PermissionId="2"/>

  <!-- Associate Users, Groups, and Roles -->

  <TurbineUserGroupRole UserId="1" GroupId="2" RoleId="1"/>
  <TurbineUserGroupRole UserId="2" GroupId="2" RoleId="2"/>

</dataset>
