01: /*
02: JSPWiki - a JSP-based WikiWiki clone.
03:
04: Copyright (C) 2001-2007 Janne Jalkanen (Janne.Jalkanen@iki.fi)
05:
06: This program is free software; you can redistribute it and/or modify
07: it under the terms of the GNU Lesser General Public License as published by
08: the Free Software Foundation; either version 2.1 of the License, or
09: (at your option) any later version.
10:
11: This program is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public License
17: along with this program; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20: package com.ecyrd.jspwiki.auth.acl;
21:
22: import java.util.Properties;
23:
24: import com.ecyrd.jspwiki.WikiEngine;
25: import com.ecyrd.jspwiki.WikiPage;
26: import com.ecyrd.jspwiki.auth.WikiSecurityException;
27:
28: /**
29: * Specifies how to parse and return ACLs from wiki pages.
30: * @author Andrew Jaquith
31: * @since 2.3
32: */
33: public interface AclManager {
34:
35: /**
36: * Initializes the AclManager with a supplied wiki engine and properties.
37: * @param engine the wiki engine
38: * @param props the initialization properties
39: */
40: public void initialize(WikiEngine engine, Properties props);
41:
42: /**
43: * A helper method for parsing textual AccessControlLists. The line is in
44: * form "(ALLOW) <permission><principal>, <principal>, <principal>". This
45: * method was moved from Authorizer.
46: * @param page The current wiki page. If the page already has an ACL, it
47: * will be used as a basis for this ACL in order to avoid the
48: * creation of a new one.
49: * @param ruleLine The rule line, as described above.
50: * @return A valid Access Control List. May be empty.
51: * @throws WikiSecurityException if the ruleLine was faulty somehow.
52: * @since 2.1.121
53: */
54: public Acl parseAcl(WikiPage page, String ruleLine)
55: throws WikiSecurityException;
56:
57: /**
58: * Returns the access control list for the page.
59: * If the ACL has not been parsed yet, it is done
60: * on-the-fly. If the page has a parent page, then that is tried also.
61: * This method was moved from Authorizer;
62: * it was consolidated with some code from AuthorizationManager.
63: * @param page the wiki page
64: * @since 2.2.121
65: * @return the Acl representing permissions for the page
66: */
67: public Acl getPermissions(WikiPage page);
68:
69: /**
70: * Sets the access control list for the page and persists it.
71: * @param page the wiki page
72: * @param acl the access control list
73: * @since 2.5
74: * @throws WikiSecurityException if the ACL cannot be set or persisted
75: */
76: public void setPermissions(WikiPage page, Acl acl)
77: throws WikiSecurityException;
78: }
|