01: /*
02: jGuard is a security framework based on top of jaas (java authentication and authorization security).
03: it is written for web applications, to resolve simply, access control problems.
04: version $Name: $
05: http://sourceforge.net/projects/jguard/
06:
07: Copyright (C) 2004 Charles GAY
08:
09: This library is free software; you can redistribute it and/or
10: modify it under the terms of the GNU Lesser General Public
11: License as published by the Free Software Foundation; either
12: version 2.1 of the License, or (at your option) any later version.
13:
14: This library is distributed in the hope that it will be useful,
15: but WITHOUT ANY WARRANTY; without even the implied warranty of
16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17: Lesser General Public License for more details.
18:
19: You should have received a copy of the GNU Lesser General Public
20: License along with this library; if not, write to the Free Software
21: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22:
23:
24: jGuard project home page:
25: http://sourceforge.net/projects/jguard/
26:
27: */
28: package net.sf.jguard.core.authorization.permissions;
29:
30: import java.security.Permission;
31:
32: import net.sf.jguard.core.authorization.workflow.WorkflowCheckerFactory;
33:
34: /**
35: * Decorator used to decorate java.security.Permission subclasses
36: * to add Dynamic Separation of Duty (DSOD) according to the
37: * Role Based Access Control (RBAC) standard.
38: * it controls when decorated permission implies the permission checked,
39: * that the 'Workflow Checker' allows this permission.
40: * @author <a href="mailto:diabolo512@users.sourceforge.net">Charles Gay</a>
41: */
42: public class DSODDecorator extends Permission {
43:
44: private static final long serialVersionUID = 6660070267190082422L;
45: private Permission permission = null;
46: private WorkflowCheckerFactory wcf = null;
47:
48: public DSODDecorator(WorkflowCheckerFactory wcf, Permission p) {
49: super (p.getName());
50: this .permission = p;
51: this .wcf = wcf;
52: }
53:
54: public boolean equals(Object obj) {
55: if (obj instanceof DSODDecorator) {
56: DSODDecorator duration = (DSODDecorator) obj;
57: if (this .permission.getName().equals(duration.getName())
58: && this .permission.getActions().equals(
59: duration.getActions())) {
60: return true;
61: }
62: }
63: return false;
64: }
65:
66: public String getActions() {
67: return permission.getActions();
68: }
69:
70: public int hashCode() {
71: return this .permission.hashCode() + wcf.hashCode();
72: }
73:
74: public boolean implies(Permission permission) {
75: // TODO Auto-generated method stub
76: return false;
77: }
78:
79: }
|