001package org.apache.fulcrum.security.model.turbine; 002 003 004/* 005 * Licensed to the Apache Software Foundation (ASF) under one 006 * or more contributor license agreements. See the NOTICE file 007 * distributed with this work for additional information 008 * regarding copyright ownership. The ASF licenses this file 009 * to you under the Apache License, Version 2.0 (the 010 * "License"); you may not use this file except in compliance 011 * with the License. You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, 016 * software distributed under the License is distributed on an 017 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 018 * KIND, either express or implied. See the License for the 019 * specific language governing permissions and limitations 020 * under the License. 021 */ 022 023 024import java.io.Serializable; 025 026import org.apache.fulcrum.security.acl.AccessControlList; 027import org.apache.fulcrum.security.entity.Group; 028import org.apache.fulcrum.security.entity.Permission; 029import org.apache.fulcrum.security.entity.Role; 030import org.apache.fulcrum.security.util.GroupSet; 031import org.apache.fulcrum.security.util.PermissionSet; 032import org.apache.fulcrum.security.util.RoleSet; 033 034/** 035 * This interface describes a control class that makes it 036 * easy to find out if a particular User has a given Permission. 037 * It also determines if a User has a a particular Role. 038 * 039 * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a> 040 * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a> 041 * @author <a href="mailto:greg@shwoop.com">Greg Ritter</a> 042 * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a> 043 * @author <a href="mailto:marco@intermeta.de">Marco Knüttel</a> 044 * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a> 045 * @version $Id: AccessControlList.java 615328 2008-01-25 20:25:05Z tv $ 046 */ 047public interface TurbineAccessControlList<T extends TurbineAccessControlList<T>> extends Serializable, AccessControlList 048{ 049 /** 050 * Retrieves a set of Roles an user is assigned in a Group. 051 * 052 * @param group the Group 053 * @return the set of Roles this user has within the Group. 054 */ 055 RoleSet getRoles(Group group); 056 057 /** 058 * Retrieves a set of Roles an user is assigned in the global Group. 059 * 060 * @return the set of Roles this user has within the global Group or null. 061 */ 062 RoleSet getRoles(); 063 064 /** 065 * Retrieves a set of Permissions an user is assigned in a Group. 066 * 067 * @param group the Group 068 * @return the set of Permissions this user has within the Group. 069 */ 070 PermissionSet getPermissions(Group group); 071 072 /** 073 * Retrieves a set of Permissions an user is assigned in the global Group. 074 * 075 * @return the set of Permissions this user has within the global Group. 076 */ 077 PermissionSet getPermissions(); 078 079 /** 080 * Checks if the user is assigned a specific Role in the Group. 081 * 082 * @param role the Role 083 * @param group the Group 084 * @return <code>true</code> if the user is assigned the Role in the Group. 085 */ 086 boolean hasRole(Role role, Group group); 087 088 /** 089 * Checks if the user is assigned a specific Role in any of the given 090 * Groups 091 * 092 * @param role the Role 093 * @param groupset a Groupset 094 * @return <code>true</code> if the user is assigned the Role in any of 095 * the given Groups. 096 */ 097 boolean hasRole(Role role, GroupSet groupset); 098 099 /** 100 * Checks if the user is assigned a specific Role in the Group. 101 * 102 * @param role the Role 103 * @param group the Group 104 * @return <code>true</code> if the user is assigned the Role in the Group. 105 */ 106 boolean hasRole(String role, String group); 107 108 /** 109 * Checks if the user is assigned a specifie Role in any of the given 110 * Groups 111 * 112 * @param rolename the name of the Role 113 * @param groupset a Groupset 114 * @return <code>true</code> if the user is assigned the Role in any of 115 * the given Groups. 116 */ 117 boolean hasRole(String rolename, GroupSet groupset); 118 119 /** 120 * Checks if the user is assigned a specific Role in the global Group. 121 * 122 * @param role the Role 123 * @return <code>true</code> if the user is assigned the Role in the global Group. 124 */ 125 boolean hasRole(Role role); 126 127 /** 128 * Checks if the user is assigned a specific Role in the global Group. 129 * 130 * @param role the Role 131 * @return <code>true</code> if the user is assigned the Role in the global Group. 132 */ 133 boolean hasRole(String role); 134 135 /** 136 * Checks if the user is assigned a specific Permission in the Group. 137 * 138 * @param permission the Permission 139 * @param group the Group 140 * @return <code>true</code> if the user is assigned the Permission in the Group. 141 */ 142 boolean hasPermission(Permission permission, Group group); 143 144 /** 145 * Checks if the user is assigned a specific Permission in any of the given 146 * Groups 147 * 148 * @param permission the Permission 149 * @param groupset a Groupset 150 * @return <code>true</code> if the user is assigned the Permission in any 151 * of the given Groups. 152 */ 153 boolean hasPermission(Permission permission, GroupSet groupset); 154 155 /** 156 * Checks if the user is assigned a specific Permission in the Group. 157 * 158 * @param permission the Permission 159 * @param group the Group 160 * @return <code>true</code> if the user is assigned the Permission in the Group. 161 */ 162 boolean hasPermission(String permission, String group); 163 164 /** 165 * Checks if the user is assigned a specific Permission in the Group. 166 * 167 * @param permission the Permission 168 * @param group the Group 169 * @return <code>true</code> if the user is assigned the Permission in the Group. 170 */ 171 boolean hasPermission(String permission, Group group); 172 173 /** 174 * Checks if the user is assigned a specifie Permission in any of the given 175 * Groups 176 * 177 * @param permissionName the name of the Permission 178 * @param groupset a Groupset 179 * @return <code>true</code> if the user is assigned the Permission in any 180 * of the given Groups. 181 */ 182 boolean hasPermission(String permissionName, GroupSet groupset); 183 184 /** 185 * Checks if the user is assigned a specific Permission in the global Group. 186 * 187 * @param permission the Permission 188 * @return <code>true</code> if the user is assigned the Permission in the global Group. 189 */ 190 boolean hasPermission(Permission permission); 191 192 /** 193 * Checks if the user is assigned a specific Permission in the global Group. 194 * 195 * @param permission the Permission 196 * @return <code>true</code> if the user is assigned the Permission in the global Group. 197 */ 198 boolean hasPermission(String permission); 199 200 /** 201 * Returns all groups defined in the system. 202 * 203 * @return An Array of all defined Groups 204 * 205 * This is useful for debugging, when you want to display all roles 206 * and permissions an user is assigned. This method is needed 207 * because you can't call static methods of TurbineSecurity class 208 * from within WebMacro/Velocity template 209 */ 210 Group[] getAllGroups(); 211 212 /** 213 * Retrieves a set of Groups an user is assigned to. 214 * 215 * @return the set of Groups this user is assigned to. 216 */ 217 GroupSet getGroupSet(); 218}