]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifUserAdmin.java
Introduce LDIF OSGi User Admin implementation
[lgpl/argeo-commons.git] / org.argeo.security.core / src / org / argeo / osgi / useradmin / LdifUserAdmin.java
1 package org.argeo.osgi.useradmin;
2
3 import java.io.InputStream;
4 import java.util.SortedMap;
5 import java.util.TreeMap;
6
7 import javax.naming.InvalidNameException;
8 import javax.naming.NamingEnumeration;
9 import javax.naming.directory.Attributes;
10 import javax.naming.ldap.LdapName;
11
12 import org.osgi.framework.InvalidSyntaxException;
13 import org.osgi.service.useradmin.Authorization;
14 import org.osgi.service.useradmin.Role;
15 import org.osgi.service.useradmin.User;
16 import org.osgi.service.useradmin.UserAdmin;
17
18 public class LdifUserAdmin implements UserAdmin {
19 private SortedMap<LdapName, Role> roles = new TreeMap<LdapName, Role>();
20
21 public LdifUserAdmin(InputStream in) {
22 try {
23 LdifParser ldifParser = new LdifParser();
24 SortedMap<LdapName, Attributes> allEntries = ldifParser.read(in);
25 for (LdapName key : allEntries.keySet()) {
26 Attributes attributes = allEntries.get(key);
27 NamingEnumeration objectClasses = attributes.get("objectClass")
28 .getAll();
29 objectClasses: while (objectClasses.hasMore()) {
30 String objectClass = objectClasses.next().toString();
31 if (objectClass.equals("inetOrgPerson")) {
32 roles.put(key, new LdifUser(key, attributes));
33 break objectClasses;
34 } else if (objectClass.equals("groupOfNames")) {
35 roles.put(key, new LdifGroup(key, attributes));
36 break objectClasses;
37 }
38 }
39 }
40 } catch (Exception e) {
41 throw new ArgeoUserAdminException(
42 "Cannot initialise user admin service from LDIF", e);
43 }
44 }
45
46 @Override
47 public Role getRole(String name) {
48 LdapName key;
49 try {
50 key = new LdapName(name);
51 } catch (InvalidNameException e) {
52 // TODO implements default base DN
53 throw new IllegalArgumentException("Badly formatted role name: "
54 + name, e);
55 }
56
57 if (!roles.containsKey(key))
58 return null;
59 return roles.get(key);
60 }
61
62 @Override
63 public Authorization getAuthorization(User user) {
64 // TODO Auto-generated method stub
65 return null;
66 }
67
68 @Override
69 public Role createRole(String name, int type) {
70 throw new UnsupportedOperationException();
71 }
72
73 @Override
74 public boolean removeRole(String name) {
75 throw new UnsupportedOperationException();
76 }
77
78 @Override
79 public Role[] getRoles(String filter) throws InvalidSyntaxException {
80 throw new UnsupportedOperationException();
81 }
82
83 @Override
84 public User getUser(String key, String value) {
85 throw new UnsupportedOperationException();
86 }
87
88 }