1 /*
2 * Licensed to The Apereo Foundation under one or more contributor license
3 * agreements. See the NOTICE file distributed with this work for additional
4 * information regarding copyright ownership.
5 *
6 *
7 * The Apereo Foundation licenses this file to you under the Educational
8 * Community License, Version 2.0 (the "License"); you may not use this file
9 * except in compliance with the License. You may obtain a copy of the License
10 * at:
11 *
12 * http://opensource.org/licenses/ecl2.txt
13 *
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17 * License for the specific language governing permissions and limitations under
18 * the License.
19 *
20 */
21
22 package org.opencastproject.security.api;
23
24 import java.util.Iterator;
25 import java.util.List;
26
27 /**
28 * Mix-in interface for directories that can list roles.
29 */
30 public interface RoleProvider {
31
32 /**
33 * Returns the roles for this user or an empty array if no roles are applicable.
34 *
35 * @param userName
36 * the user id
37 * @return the set of roles
38 */
39 List<Role> getRolesForUser(String userName);
40
41 /**
42 * Returns the identifier for the organization that is defining this set of roles.
43 *
44 * @return the defining organization
45 */
46 String getOrganization();
47
48 /**
49 * Return the found roles as an iterator.
50 *
51 * @param query
52 * the query. Use the wildcards "_" to match any single character and "%" to match an arbitrary number of
53 * characters (including zero characters).
54 * @param offset
55 * the offset
56 * @param limit
57 * the limit. 0 means no limit
58 * @return an iterator of role's
59 * @throws IllegalArgumentException
60 * if the query is <code>null</code>
61 */
62 Iterator<Role> findRoles(String query, Role.Target target, int offset, int limit);
63
64 }