]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.enterprise/src/org/argeo/osgi/useradmin/OsUserDirectory.java
Change the approach for releases
[lgpl/argeo-commons.git] / org.argeo.enterprise / src / org / argeo / osgi / useradmin / OsUserDirectory.java
1 package org.argeo.osgi.useradmin;
2
3 import java.net.URI;
4 import java.util.ArrayList;
5 import java.util.Dictionary;
6 import java.util.List;
7
8 import javax.naming.NameNotFoundException;
9 import javax.naming.NamingException;
10 import javax.naming.directory.Attributes;
11 import javax.naming.directory.BasicAttributes;
12 import javax.naming.ldap.LdapName;
13
14 import org.argeo.naming.LdapAttrs;
15 import org.osgi.framework.Filter;
16 import org.osgi.service.useradmin.User;
17
18 public class OsUserDirectory extends AbstractUserDirectory {
19 private final String osUsername = System.getProperty("user.name");
20 private final LdapName osUserDn;
21 private final LdifUser osUser;
22
23 public OsUserDirectory(URI uriArg, Dictionary<String, ?> props) {
24 super(uriArg, props, false);
25 try {
26 osUserDn = new LdapName(LdapAttrs.uid.name() + "=" + osUsername + "," + getUserBase() + "," + getBaseDn());
27 Attributes attributes = new BasicAttributes();
28 attributes.put(LdapAttrs.uid.name(), osUsername);
29 osUser = new LdifUser(this, osUserDn, attributes);
30 } catch (NamingException e) {
31 throw new UserDirectoryException("Cannot create system user", e);
32 }
33 }
34
35 @Override
36 protected List<LdapName> getDirectGroups(LdapName dn) {
37 return new ArrayList<>();
38 }
39
40 @Override
41 protected Boolean daoHasRole(LdapName dn) {
42 return osUserDn.equals(dn);
43 }
44
45 @Override
46 protected DirectoryUser daoGetRole(LdapName key) throws NameNotFoundException {
47 if (osUserDn.equals(key))
48 return osUser;
49 else
50 throw new NameNotFoundException("Not an OS role");
51 }
52
53 @Override
54 protected List<DirectoryUser> doGetRoles(Filter f) {
55 List<DirectoryUser> res = new ArrayList<>();
56 if (f == null || f.match(osUser.getProperties()))
57 res.add(osUser);
58 return res;
59 }
60
61 @Override
62 protected AbstractUserDirectory scope(User user) {
63 throw new UnsupportedOperationException();
64 }
65
66 }