]> git.argeo.org Git - lgpl/argeo-commons.git/blob - OsUserDirectory.java
c052fee1b1da12bc4193a208c4d21123fc4d0e21
[lgpl/argeo-commons.git] / OsUserDirectory.java
1 package org.argeo.osgi.useradmin;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import javax.naming.NameNotFoundException;
7 import javax.naming.NamingException;
8 import javax.naming.directory.Attributes;
9 import javax.naming.directory.BasicAttributes;
10 import javax.naming.ldap.LdapName;
11
12 import org.argeo.util.directory.HierarchyUnit;
13 import org.argeo.util.directory.ldap.AbstractLdapDirectory;
14 import org.argeo.util.directory.ldap.AbstractLdapDirectoryDao;
15 import org.argeo.util.directory.ldap.LdapEntry;
16 import org.argeo.util.directory.ldap.LdapEntryWorkingCopy;
17 import org.argeo.util.naming.LdapAttrs;
18
19 /** Pseudo user directory to be used when logging in as OS user. */
20 public class OsUserDirectory extends AbstractLdapDirectoryDao {
21 private final String osUsername = System.getProperty("user.name");
22 private final LdapName osUserDn;
23 private final LdapEntry osUser;
24
25 public OsUserDirectory(AbstractLdapDirectory directory) {
26 super(directory);
27 try {
28 osUserDn = new LdapName(LdapAttrs.uid.name() + "=" + osUsername + "," + directory.getUserBaseRdn() + ","
29 + directory.getBaseDn());
30 Attributes attributes = new BasicAttributes();
31 attributes.put(LdapAttrs.uid.name(), osUsername);
32 osUser = newUser(osUserDn, attributes);
33 } catch (NamingException e) {
34 throw new IllegalStateException("Cannot create system user", e);
35 }
36 }
37
38 @Override
39 public List<LdapName> getDirectGroups(LdapName dn) {
40 return new ArrayList<>();
41 }
42
43 @Override
44 public Boolean entryExists(LdapName dn) {
45 return osUserDn.equals(dn);
46 }
47
48 @Override
49 public LdapEntry doGetEntry(LdapName key) throws NameNotFoundException {
50 if (osUserDn.equals(key))
51 return osUser;
52 else
53 throw new NameNotFoundException("Not an OS role");
54 }
55
56 @Override
57 public List<LdapEntry> doGetEntries(LdapName searchBase, String f, boolean deep) {
58 List<LdapEntry> res = new ArrayList<>();
59 // if (f == null || f.match(osUser.getProperties()))
60 res.add(osUser);
61 return res;
62 }
63
64 @Override
65 public HierarchyUnit doGetHierarchyUnit(LdapName dn) {
66 return null;
67 }
68
69 @Override
70 public Iterable<HierarchyUnit> doGetDirectHierarchyUnits(LdapName searchBase, boolean functionalOnly) {
71 return new ArrayList<>();
72 }
73
74 public void prepare(LdapEntryWorkingCopy wc) {
75
76 }
77
78 public void commit(LdapEntryWorkingCopy wc) {
79
80 }
81
82 public void rollback(LdapEntryWorkingCopy wc) {
83
84 }
85
86 @Override
87 public void init() {
88 // TODO Auto-generated method stub
89
90 }
91
92 @Override
93 public void destroy() {
94 // TODO Auto-generated method stub
95
96 }
97
98
99 }