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.authorization.xacml.manager.impl;
23
24 import org.opencastproject.authorization.xacml.manager.api.ManagedAcl;
25 import org.opencastproject.security.api.AccessControlList;
26 import org.opencastproject.security.api.Organization;
27
28 import java.util.List;
29 import java.util.Optional;
30
31 /** The ACL DB stores ACLs on a per organization basis. */
32 public interface AclDb {
33 /** Return all ACLs of this organization. */
34 List<ManagedAcl> getAcls(Organization org);
35
36 /**
37 * Return an ACL of an organization by its ID.
38 *
39 * @return <code>some</code> if the ACL could be found, <code>none</code> if the ACL with the given ID does not exist.
40 */
41 Optional<ManagedAcl> getAcl(Organization org, long id);
42
43 /**
44 * Return an ACL of an organization by its name.
45 *
46 * @return <code>some</code> if the ACL could be found,
47 * <code>none</code> if the ACL with the given name does not exist.
48 */
49 Optional<ManagedAcl> getAcl(Organization org, String name);
50
51 /**
52 * Update an existing ACL.
53 *
54 * @return true on a successful update, false if no ACL exists with the given ID.
55 */
56 boolean updateAcl(ManagedAcl acl);
57
58 /**
59 * Create a new ACL.
60 *
61 * @return <code>some</code> if the new ACL could be created successfully, <code>none</code> if an ACL with the same
62 * name already exists
63 */
64 Optional<ManagedAcl> createAcl(Organization org, AccessControlList acl, String name);
65
66 /**
67 * Delete an ACL by its ID.
68 *
69 * @return true if the ACL existed and could be deleted successfully, false if there is no such ACL.
70 */
71 boolean deleteAcl(Organization org, long id);
72 }