source: EDIS/trunk/java/tracking-server-vista/src/main/java/gov/va/med/edp/springframework/security/userdetails/memory/VistaUserMapEditor.java@ 1227

Last change on this file since 1227 was 1227, checked in by George Lilly, 13 years ago

initial load of EDIS 1.0

File size: 3.3 KB
Line 
1package gov.va.med.edp.springframework.security.userdetails.memory;
2
3import org.springframework.security.userdetails.memory.UserAttributeEditor;
4import org.springframework.security.userdetails.memory.UserAttribute;
5import org.springframework.beans.propertyeditors.PropertiesEditor;
6import org.springframework.util.StringUtils;
7
8import java.beans.PropertyEditorSupport;
9import java.util.Properties;
10import java.util.Iterator;
11import java.util.Random;
12
13import gov.va.med.edp.springframework.security.userdetails.VistaUserDetails;
14import gov.va.med.edp.springframework.security.userdetails.vistalink.VistaUser;
15
16/**
17 * Property editor to assist with the setup of a {@link VistaUserMap}.<p>The format of entries should be:</p>
18 * <p><code> duz@stationNumber=access;verify,grantedAuthority[,grantedAuthority][,enabled|disabled] </code></p>
19 * At least one granted authority must be listed.</p>
20 * <p>The <code>duz@stationNumber</code> represents the key and duplicates are handled the same was as duplicates would be
21 * in Java <code>Properties</code> files.</p>
22 * <p>If the above requirements are not met, the invalid entry will be silently ignored.</p>
23 * <p>This editor always assumes each entry has a non-expired account and non-expired credentials. However, it
24 * does honour the user enabled/disabled flag as described above.</p>
25 */
26public class VistaUserMapEditor extends PropertyEditorSupport {
27 public void setAsText(String s) throws IllegalArgumentException {
28 VistaUserMap userMap = new VistaUserMap();
29
30 if ((s == null) || "".equals(s)) {
31 // Leave value in property editor null
32 } else {
33 // Use properties editor to tokenize the string
34 PropertiesEditor propertiesEditor = new PropertiesEditor();
35 propertiesEditor.setAsText(s);
36
37 Properties props = (Properties) propertiesEditor.getValue();
38 addUsersFromProperties(userMap, props);
39 }
40
41 setValue(userMap);
42 }
43
44 public static VistaUserMap addUsersFromProperties(VistaUserMap userMap, Properties props) {
45 // Now we have properties, process each one individually
46 UserAttributeEditor configAttribEd = new UserAttributeEditor();
47
48 for (Iterator iter = props.keySet().iterator(); iter.hasNext();) {
49 String key = (String) iter.next();
50 String value = props.getProperty(key);
51
52 // Convert value to a password, enabled setting, and list of granted authorities
53 configAttribEd.setAsText(value);
54
55 UserAttribute attr = (UserAttribute) configAttribEd.getValue();
56
57 // Make a user object, assuming the properties were properly provided
58 if (attr != null) {
59 String duz = StringUtils.split(key, "@")[0];
60 String stationNumber = StringUtils.split(key, "@")[1];
61 String access = StringUtils.split(attr.getPassword(),";")[0];
62 String verify = StringUtils.split(attr.getPassword(),";")[1];
63 VistaUserDetails user = new VistaUser(new Random().toString(), stationNumber, duz, access, verify, attr.isEnabled(), true, true, true, attr.getAuthorities());
64 userMap.addUser(user);
65 }
66 }
67
68 return userMap;
69 }
70}
Note: See TracBrowser for help on using the repository browser.