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