]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.util/src/org/argeo/osgi/useradmin/OsUserDirectory.java
3ded7a7a6a6ce28cfd277663b6efbb9e238a4810
1 package org
.argeo
.osgi
.useradmin
;
4 import java
.util
.ArrayList
;
5 import java
.util
.Dictionary
;
8 import javax
.naming
.NameNotFoundException
;
9 import javax
.naming
.NamingException
;
10 import javax
.naming
.directory
.Attributes
;
11 import javax
.naming
.directory
.BasicAttributes
;
12 import javax
.naming
.ldap
.LdapName
;
14 import org
.argeo
.util
.naming
.LdapAttrs
;
15 import org
.osgi
.framework
.Filter
;
16 import org
.osgi
.service
.useradmin
.User
;
18 /** Pseudo user directory to be used when logging in as OS user. */
19 public class OsUserDirectory
extends AbstractUserDirectory
{
20 private final String osUsername
= System
.getProperty("user.name");
21 private final LdapName osUserDn
;
22 private final DirectoryUser osUser
;
24 public OsUserDirectory(URI uriArg
, Dictionary
<String
, ?
> props
) {
25 super(uriArg
, props
, false);
27 osUserDn
= new LdapName(
28 LdapAttrs
.uid
.name() + "=" + osUsername
+ "," + getUserBaseRdn() + "," + getBaseDn());
29 Attributes attributes
= new BasicAttributes();
30 attributes
.put(LdapAttrs
.uid
.name(), osUsername
);
31 osUser
= newUser(osUserDn
, attributes
);
32 } catch (NamingException e
) {
33 throw new IllegalStateException("Cannot create system user", e
);
38 protected List
<LdapName
> getDirectGroups(LdapName dn
) {
39 return new ArrayList
<>();
43 protected Boolean
daoHasRole(LdapName dn
) {
44 return osUserDn
.equals(dn
);
48 protected DirectoryUser
daoGetRole(LdapName key
) throws NameNotFoundException
{
49 if (osUserDn
.equals(key
))
52 throw new NameNotFoundException("Not an OS role");
56 protected List
<DirectoryUser
> doGetRoles(LdapName searchBase
, Filter f
, boolean deep
) {
57 List
<DirectoryUser
> res
= new ArrayList
<>();
58 if (f
== null || f
.match(osUser
.getProperties()))
64 protected AbstractUserDirectory
scope(User user
) {
65 throw new UnsupportedOperationException();
69 protected HierarchyUnit
doGetHierarchyUnit(LdapName dn
) {
74 protected Iterable
<HierarchyUnit
> doGetDirectHierarchyUnits(LdapName searchBase
, boolean functionalOnly
) {
75 return new ArrayList
<>();