001: package com.sun.portal.sra.util;
002:
003: import com.iplanet.am.sdk.*;
004: import com.iplanet.sso.SSOException;
005: import com.iplanet.sso.SSOToken;
006: import com.sun.identity.policy.PolicyEvaluator;
007: import com.sun.identity.policy.PolicyException;
008: import java.security.Principal;
009: import java.util.*;
010:
011: // Referenced classes of package com.sun.portal.sraSeparation.util:
012: // AttributeExtractor
013:
014: public class UserAttributes {
015:
016: public UserAttributes(SSOToken token) {
017: SRA_SEPARATION_SERVICE_NAME = "sraSeparationService";
018: SRA_SEPARATION_POLICY = "sunSRASeparationExecute";
019: ssoToken = null;
020: user = null;
021: try {
022: ssoToken = token;
023: AMStoreConnection connection = new AMStoreConnection(
024: ssoToken);
025: user = connection.getUser(token.getPrincipal().getName());
026: userAttributes = user
027: .getServiceAttributes(SRA_SEPARATION_SERVICE_NAME);
028: applyDefault = false;
029: } catch (SSOException ssoe) {
030: applyDefault = true;
031: } catch (AMException dpe) {
032: applyDefault = true;
033: }
034: }
035:
036: public boolean isPolicyAssigned() {
037: boolean policyAssigned = false;
038: try {
039: PolicyEvaluator policyEval = new PolicyEvaluator(
040: SRA_SEPARATION_SERVICE_NAME);
041: policyAssigned = policyEval.isAllowed(ssoToken, "",
042: SRA_SEPARATION_POLICY, Collections.EMPTY_MAP);
043: } catch (PolicyException pe) {
044: policyAssigned = false;
045: } catch (SSOException ssoe) {
046: policyAssigned = false;
047: }
048: return policyAssigned;
049: }
050:
051: public boolean isServiceAssigned() {
052: boolean serviceAssigned = false;
053: try {
054: Set vals = null;
055: vals = user.getAssignedServices();
056: if (vals == null || vals.isEmpty())
057: serviceAssigned = false;
058: for (Iterator iter = vals.iterator(); iter.hasNext();) {
059: String serviceName = (String) iter.next();
060: if (SRA_SEPARATION_SERVICE_NAME
061: .equalsIgnoreCase(serviceName)) {
062: serviceAssigned = true;
063: break;
064: }
065: }
066:
067: } catch (Exception ex) {
068: serviceAssigned = false;
069: }
070: return serviceAssigned;
071: }
072:
073: public boolean isAllowed() {
074: return isServiceAssigned() && isPolicyAssigned();
075: }
076:
077: public String getString(String name, String defaultValue) {
078: return applyDefault ? defaultValue : AttributeExtractor
079: .getString(userAttributes, name, defaultValue);
080: }
081:
082: public String getString(String name) {
083: return getString(name, "");
084: }
085:
086: public void setString(String name, String value) {
087: HashSet hs = new HashSet(1);
088: hs.add(value);
089: Map changedMap = new HashMap();
090: changedMap.put(name, hs);
091: try {
092: user.setAttributes(changedMap);
093: user.store();
094: } catch (SSOException ssoe) {
095: } catch (AMException ame) {
096: }
097: }
098:
099: public int getInt(String name, int defaultValue) {
100: return applyDefault ? defaultValue : AttributeExtractor.getInt(
101: userAttributes, name, defaultValue);
102: }
103:
104: public int getInt(String name) {
105: return getInt(name, -1);
106: }
107:
108: public void setInt(String name, int value) {
109: String val = "" + value;
110: HashSet hs = new HashSet(1);
111: hs.add(val);
112: Map changedMap = new HashMap();
113: changedMap.put(name, hs);
114: try {
115: user.setAttributes(changedMap);
116: user.store();
117: } catch (SSOException ssoe) {
118: } catch (AMException ame) {
119: }
120: }
121:
122: public boolean getBoolean(String name, boolean defaultValue) {
123: return applyDefault ? defaultValue : AttributeExtractor
124: .getBoolean(userAttributes, name, defaultValue);
125: }
126:
127: public boolean getBoolean(String name) {
128: return getBoolean(name, false);
129: }
130:
131: public void setBoolean(String name, boolean value) {
132: String val = "" + value;
133: HashSet hs = new HashSet(1);
134: hs.add(val);
135: Map changedMap = new HashMap();
136: changedMap.put(name, hs);
137: try {
138: user.setAttributes(changedMap);
139: user.store();
140: } catch (SSOException ssoe) {
141: } catch (AMException ame) {
142: }
143: }
144:
145: public List getStringList(String name) {
146: return ((List) (applyDefault ? new ArrayList()
147: : AttributeExtractor
148: .getStringList(userAttributes, name)));
149: }
150:
151: public void setStringList(String name, List value) {
152: HashSet hs = new HashSet(value);
153: Map changedMap = new HashMap();
154: changedMap.put(name, hs);
155: try {
156: user.setAttributes(changedMap);
157: user.store();
158: } catch (SSOException ssoe) {
159: } catch (AMException ame) {
160: }
161: }
162:
163: public String getUserAttribute(String name, String defaultValue) {
164: try {
165: Set set = user.getAttribute(name);
166: if (set != null) {
167: Iterator it = set.iterator();
168: return (it.hasNext()) ? (String) it.next()
169: : defaultValue;
170: }
171: } catch (SSOException ssoe) {
172: return defaultValue;
173: } catch (AMException ame) {
174: return defaultValue;
175: }
176: return defaultValue;
177: }
178:
179: public String getUserAttribute(String name) {
180: return getUserAttribute(name, "");
181: }
182:
183: private String SRA_SEPARATION_SERVICE_NAME;
184: private String SRA_SEPARATION_POLICY;
185: private SSOToken ssoToken;
186: private AMUser user;
187: private Map userAttributes;
188: private boolean applyDefault;
189: }
|