1 package org
.argeo
.osgi
.useradmin
;
3 import java
.util
.ArrayList
;
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
;
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
;
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
;
25 public OsUserDirectory(AbstractLdapDirectory directory
) {
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
);
39 public List
<LdapName
> getDirectGroups(LdapName dn
) {
40 return new ArrayList
<>();
44 public Boolean
entryExists(LdapName dn
) {
45 return osUserDn
.equals(dn
);
49 public LdapEntry
doGetEntry(LdapName key
) throws NameNotFoundException
{
50 if (osUserDn
.equals(key
))
53 throw new NameNotFoundException("Not an OS role");
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()))
65 public HierarchyUnit
doGetHierarchyUnit(LdapName dn
) {
70 public Iterable
<HierarchyUnit
> doGetDirectHierarchyUnits(LdapName searchBase
, boolean functionalOnly
) {
71 return new ArrayList
<>();
74 public void prepare(LdapEntryWorkingCopy wc
) {
78 public void commit(LdapEntryWorkingCopy wc
) {
82 public void rollback(LdapEntryWorkingCopy wc
) {
88 // TODO Auto-generated method stub
93 public void destroy() {
94 // TODO Auto-generated method stub