1 package org
.argeo
.cms
.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
.ldap
.LdapName
;
11 import org
.argeo
.api
.acr
.ldap
.LdapAttrs
;
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
;
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
;
24 public OsUserDirectory(AbstractLdapDirectory directory
) {
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
);
38 public List
<LdapName
> getDirectGroups(LdapName dn
) {
39 return new ArrayList
<>();
43 public boolean entryExists(LdapName dn
) {
44 return osUserDn
.equals(dn
);
48 public boolean checkConnection() {
53 public LdapEntry
doGetEntry(LdapName key
) throws NameNotFoundException
{
54 if (osUserDn
.equals(key
))
57 throw new NameNotFoundException("Not an OS role");
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()))
69 public HierarchyUnit
doGetHierarchyUnit(LdapName dn
) {
74 public Iterable
<HierarchyUnit
> doGetDirectHierarchyUnits(LdapName searchBase
, boolean functionalOnly
) {
75 return new ArrayList
<>();
78 public void prepare(LdapEntryWorkingCopy wc
) {
82 public void commit(LdapEntryWorkingCopy wc
) {
86 public void rollback(LdapEntryWorkingCopy wc
) {
92 // TODO Auto-generated method stub
97 public void destroy() {
98 // TODO Auto-generated method stub
103 public Attributes
doGetAttributes(LdapName name
) {
105 return doGetEntry(name
).getAttributes();
106 } catch (NameNotFoundException e
) {
107 throw new IllegalStateException(name
+ " doe not exist in " + getDirectory().getBaseDn(), e
);