KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > jforum > security > PermissionControl


1 /*
2  * Copyright (c) Rafael Steil
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms,
6  * with or without modification, are permitted provided
7  * that the following conditions are met:
8  *
9  * 1) Redistributions of source code must retain the above
10  * copyright notice, this list of conditions and the
11  * following disclaimer.
12  * 2) Redistributions in binary form must reproduce the
13  * above copyright notice, this list of conditions and
14  * the following disclaimer in the documentation and/or
15  * other materials provided with the distribution.
16  * 3) Neither the name of "Rafael Steil" nor
17  * the names of its contributors may be used to endorse
18  * or promote products derived from this software without
19  * specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
22  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
23  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
24  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR
26  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
27  * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
28  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES
30  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
32  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
33  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
34  * IN CONTRACT, STRICT LIABILITY, OR TORT
35  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
37  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
38  *
39  * This file creation date: Oct 10, 2003 / 21:46:35 PM
40  * The JForum Project
41  * http://www.jforum.net
42  */

43 package net.jforum.security;
44
45 import java.io.Serializable JavaDoc;
46
47 import net.jforum.dao.security.SecurityDAO;
48
49 /**
50  * Methods and properties for all classes that need make use of security
51  * actions.
52  *
53  * @author Rafael Steil
54  * @version $Id: PermissionControl.java,v 1.15 2005/09/25 02:18:37 rafaelsteil Exp $
55  */

56 public class PermissionControl implements Serializable JavaDoc
57 {
58     public static final int ROLE_DENY = 0;
59     public static final int ROLE_ALLOW = 1;
60
61     private RoleCollection roles;
62     private SecurityDAO smodel;
63     
64     public void setRoles(RoleCollection roles)
65     {
66         this.roles = roles;
67     }
68     
69     public void setSecurityModel(SecurityDAO smodel)
70     {
71         this.smodel = smodel;
72     }
73     
74     public void addRole(int id, Role role) throws Exception JavaDoc
75     {
76         this.smodel.addRole(id, role);
77     }
78     
79     public void addRole(int id, Role role, RoleValueCollection roleValues) throws Exception JavaDoc
80     {
81         this.smodel.addRole(id, role, roleValues);
82     }
83     
84     public void addRoleValue(int id, Role role, RoleValueCollection roleValues) throws Exception JavaDoc
85     {
86         this.smodel.addRoleValue(id, role, roleValues);
87     }
88     
89     public void deleteAllRoles(int id) throws Exception JavaDoc
90     {
91         this.smodel.deleteAllRoles(id);
92     }
93     
94     /**
95      * Gets a role.
96      *
97      * @param roleName The role's name
98      * @return A <code>Role</code> object if the role was found, or <code>null</code> if not found.
99      */

100     public Role getRole(String JavaDoc roleName)
101     {
102         return this.roles.get(roleName);
103     }
104     
105     /**
106      * @see net.jforum.security.PermissionControl#canAccess(java.lang.String)
107      */

108     public boolean canAccess(String JavaDoc roleName)
109     {
110         Role role = this.roles.get(roleName);
111         return (role != null && role.getType() == PermissionControl.ROLE_ALLOW);
112     }
113     
114     /**
115      * @see net.jforum.security.PermissionControl#canAccess(java.lang.String, java.lang.String)
116      */

117     public boolean canAccess(String JavaDoc roleName, String JavaDoc roleValue)
118     {
119         Role role = this.roles.get(roleName);
120         if (role == null) {
121             return false;
122         }
123
124         RoleValue rv = new RoleValue();
125         rv.setType(PermissionControl.ROLE_ALLOW);
126         rv.setValue(roleValue);
127
128         return role.getValues().contains(rv);
129     }
130 }
131
Popular Tags