]> git.argeo.org Git - lgpl/argeo-commons.git/blob - OsUserDirectory.java
69c06c8483a2d73f9735f06b3700705d32907079
[lgpl/argeo-commons.git] / 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.util.naming.LdapAttrs;
15 import org.osgi.framework.Filter;
16 import org.osgi.service.useradmin.User;
17
18 /** Pseudo user directory to be used when logging in as OS user. */
19 public class OsUserDirectory extends AbstractUserDirectory {
20 private final String osUsername = System.getProperty("user.name");
21 private final LdapName osUserDn;
22 private final DirectoryUser osUser;
23
24 public OsUserDirectory(URI uriArg, Dictionary<String, ?> props) {
25 super(uriArg, props, false);
26 try {
27 osUserDn = new LdapName(
28 LdapAttrs.uid.name() + "=" + osUsername + "," + getUserBaseRdn() + "," + getBaseDn());
29 Attributes attributes = new BasicAttributes();
30 attributes.put(LdapAttrs.uid.name(), osUsername);
31 osUser = newUser(osUserDn, attributes);
32 } catch (NamingException e) {
33 throw new IllegalStateException("Cannot create system user", e);
34 }
35 }
36
37 @Override
38 protected List<LdapName> getDirectGroups(LdapName dn) {
39 return new ArrayList<>();
40 }
41
42 @Override
43 protected Boolean daoHasRole(LdapName dn) {
44 return osUserDn.equals(dn);
45 }
46
47 @Override
48 protected DirectoryUser daoGetRole(LdapName key) throws NameNotFoundException {
49 if (osUserDn.equals(key))
50 return osUser;
51 else
52 throw new NameNotFoundException("Not an OS role");
53 }
54
55 @Override
56 protected List<DirectoryUser> doGetRoles(LdapName searchBase, Filter f, boolean deep) {
57 List<DirectoryUser> res = new ArrayList<>();
58 if (f == null || f.match(osUser.getProperties()))
59 res.add(osUser);
60 return res;
61 }
62
63 @Override
64 protected AbstractUserDirectory scope(User user) {
65 throw new UnsupportedOperationException();
66 }
67
68 @Override
69 protected HierarchyUnit doGetHierarchyUnit(LdapName dn) {
70 return null;
71 }
72
73 @Override
74 protected Iterable<HierarchyUnit> doGetDirectHierarchyUnits(LdapName searchBase, boolean functionalOnly) {
75 return new ArrayList<>();
76 }
77
78 public void prepare(DirectoryUserWorkingCopy wc) {
79
80 }
81
82 public void commit(DirectoryUserWorkingCopy wc) {
83
84 }
85
86 public void rollback(DirectoryUserWorkingCopy wc) {
87
88 }
89
90
91 }