1 /*
2 * Copyright (c) 2003
3 * Information Desire GmbH
4 * All rights reserved.
5 */
6 package com.infodesire.infobit.security;
7
8 import java.util.List;
9 import java.util.Collection;
10 import java.util.Properties;
11 import java.util.Iterator;
12 import java.util.HashSet;
13
14 import org.apache.commons.logging.Log;
15 import org.apache.commons.logging.LogFactory;
16
17 /***
18 * default security provider. hardwired user configuration off properties
19 *
20 * @author konstantin
21 * @created August 7, 2003
22 * @version $Revision: 1.2 $
23 */
24 public class DefaultSecurityProvider implements SecurityProvider {
25 /***
26 * property configuring username of this provider
27 */
28 public final static String USERNAME_PROPERTY = "security.username";
29 /***
30 * property name prefix specifying user role ( can be used more than once )
31 * good choice would be adding sequencial number
32 */
33 public final static String ROLE_PROPERTY_PREFIX = "security.role.";
34 /***
35 * property holding superuser role name. Only superusers can modify ACL
36 */
37 private final static String SUPERUSER_ROLE = "infobit_superuser";
38
39 private static Log _log = LogFactory.getLog(DefaultSecurityProvider.class);
40
41 private HashSet _roles = new HashSet();
42 private String _userName = null;
43
44
45 /***
46 * configured user name
47 *
48 * @return The Name value
49 */
50 public String getName() {
51 return _userName;
52 }
53
54
55 /***
56 * Gets the Superuser attribute of the DefaultSecurityProvider object
57 *
58 * @return The Superuser value
59 */
60 public boolean isSuperuser() {
61 return hasRole(SUPERUSER_ROLE);
62 }
63
64
65 /***
66 * whether provider configured to accept this role
67 *
68 * @param role role name of interest
69 * @return acceptance status
70 */
71 public boolean hasRole(String role) {
72 return _roles.contains(role);
73 }
74
75
76 /***
77 * whether provider configured to at least one of given roles
78 *
79 * @param roles Description of Parameter
80 * @return Description of the Returned Value
81 */
82 public boolean hasRole(Collection roles) {
83 for (Iterator iter = roles.iterator(); iter.hasNext(); ) {
84 if (_roles.contains(iter.next())) {
85 return true;
86 }
87 }
88 return false;
89 }
90
91
92 /***
93 * initialize security provider ( user & role set ) via properties.
94 *
95 * @param properties Description of Parameter
96 */
97 public void init(Properties properties) {
98 if (properties != null) {
99 String pname;
100 for (Iterator iter = properties.keySet().iterator(); iter.hasNext(); ) {
101 pname = (String) iter.next();
102 if (pname.startsWith(ROLE_PROPERTY_PREFIX)) {
103 _roles.add(properties.getProperty(pname));
104 if (_log.isDebugEnabled()) {
105 _log.debug("configuring role: " + properties.getProperty(pname));
106 }
107 }
108 else if (USERNAME_PROPERTY.equals(pname)) {
109 _userName = properties.getProperty(pname);
110 if (_log.isDebugEnabled()) {
111 _log.debug("configuring user: " + properties.getProperty(pname));
112 }
113
114 }
115 }
116 }
117 }
118 }
This page was automatically generated by Maven