]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.eclipse.ui.workbench/src/org/argeo/eclipse/ui/workbench/users/internal/UsersUtils.java
1 package org
.argeo
.eclipse
.ui
.workbench
.users
.internal
;
3 import java
.security
.AccessController
;
6 import javax
.naming
.InvalidNameException
;
7 import javax
.naming
.ldap
.LdapName
;
8 import javax
.naming
.ldap
.Rdn
;
9 import javax
.security
.auth
.Subject
;
10 import javax
.security
.auth
.x500
.X500Principal
;
12 import org
.argeo
.ArgeoException
;
13 import org
.argeo
.osgi
.useradmin
.LdifName
;
14 import org
.osgi
.service
.useradmin
.Role
;
15 import org
.osgi
.service
.useradmin
.User
;
17 /** Utility methods to manage user concepts in the ui.workbench bundle */
18 public class UsersUtils
{
19 // TODO this constant is defined in the CMS
20 public final static String ROLES_BASEDN
= "ou=roles,ou=node";
22 public final static boolean isCurrentUser(User user
) {
23 String userName
= getProperty(user
, LdifName
.dn
.name());
25 LdapName selfUserName
= getLdapName();
26 LdapName userLdapName
= new LdapName(userName
);
27 if (userLdapName
.equals(selfUserName
))
31 } catch (InvalidNameException e
) {
32 throw new ArgeoException("User " + user
+ " has an unvalid dn: "
37 public final static LdapName
getLdapName() {
38 Subject subject
= Subject
.getSubject(AccessController
.getContext());
39 String name
= subject
.getPrincipals(X500Principal
.class).iterator()
43 dn
= new LdapName(name
);
44 } catch (InvalidNameException e
) {
45 throw new ArgeoException("Invalid user dn " + name
, e
);
50 public final static String
getCommonName(User user
) {
51 return getProperty(user
, LdifName
.cn
.name());
54 /** Simply retrieves a display name of the relevant domain */
55 public final static String
getDomainName(User user
) {
56 String dn
= (String
) user
.getProperties().get(LdifName
.dn
.name());
57 if (dn
.endsWith(ROLES_BASEDN
))
58 return "System roles";
61 name
= new LdapName(dn
);
62 List
<Rdn
> rdns
= name
.getRdns();
65 loop
: while (i
< rdns
.size()) {
66 Rdn currrRdn
= rdns
.get(i
);
67 if (!"dc".equals(currrRdn
.getType()))
70 String currVal
= (String
) currrRdn
.getValue();
71 dname
= dname
== null ? currVal
: currVal
+ "." + dname
;
76 } catch (InvalidNameException e
) {
77 throw new ArgeoException("Unable to get domain name for " + dn
, e
);
81 public final static String
getProperty(Role role
, String key
) {
82 Object obj
= role
.getProperties().get(key
);
90 * INTERNAL METHODS: Below methods are meant to stay here and are not part
91 * of a potential generic backend to manage the useradmin
93 public final static boolean notNull(String string
) {
97 return !"".equals(string
.trim());