]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/osgi/useradmin/OsUserDirectory.java
Refactor WebDav implementation
[lgpl/argeo-commons.git] / org.argeo.util / src / org / argeo / osgi / useradmin / 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.ldap.LdapName;
10
11 import org.argeo.util.directory.HierarchyUnit;
12 import org.argeo.util.directory.ldap.AbstractLdapDirectory;
13 import org.argeo.util.directory.ldap.AbstractLdapDirectoryDao;
14 import org.argeo.util.directory.ldap.LdapEntry;
15 import org.argeo.util.directory.ldap.LdapEntryWorkingCopy;
16 import org.argeo.util.naming.LdapAttrs;
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(LdapAttrs.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 LdapEntry doGetEntry(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 public List<LdapEntry> doGetEntries(LdapName searchBase, String f, boolean deep) {
57 List<LdapEntry> res = new ArrayList<>();
58 // if (f == null || f.match(osUser.getProperties()))
59 res.add(osUser);
60 return res;
61 }
62
63 @Override
64 public HierarchyUnit doGetHierarchyUnit(LdapName dn) {
65 return null;
66 }
67
68 @Override
69 public Iterable<HierarchyUnit> doGetDirectHierarchyUnits(LdapName searchBase, boolean functionalOnly) {
70 return new ArrayList<>();
71 }
72
73 public void prepare(LdapEntryWorkingCopy wc) {
74
75 }
76
77 public void commit(LdapEntryWorkingCopy wc) {
78
79 }
80
81 public void rollback(LdapEntryWorkingCopy wc) {
82
83 }
84
85 @Override
86 public void init() {
87 // TODO Auto-generated method stub
88
89 }
90
91 @Override
92 public void destroy() {
93 // TODO Auto-generated method stub
94
95 }
96
97 @Override
98 public Attributes doGetAttributes(LdapName name) {
99 try {
100 return doGetEntry(name).getAttributes();
101 } catch (NameNotFoundException e) {
102 throw new IllegalStateException(name + " doe not exist in " + getDirectory().getBaseDn(), e);
103 }
104 }
105
106 }