X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fauth%2FUserAdminUtils.java;h=3c24f98af3574627fc3f1bbe6fdf7762c7e165ba;hb=0e533d2562def311fdd7aa71f1d0d704e466861e;hp=3dbc7ad52fa03a7792afecaf6cd53757604bba7e;hpb=5b3108fe285bca50565b58b63fa4feddc96c0765;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/auth/UserAdminUtils.java b/org.argeo.cms/src/org/argeo/cms/auth/UserAdminUtils.java index 3dbc7ad52..3c24f98af 100644 --- a/org.argeo.cms/src/org/argeo/cms/auth/UserAdminUtils.java +++ b/org.argeo.cms/src/org/argeo/cms/auth/UserAdminUtils.java @@ -6,9 +6,9 @@ import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; import javax.naming.ldap.Rdn; -import org.argeo.api.NodeConstants; -import org.argeo.cms.CmsException; -import org.argeo.naming.LdapAttrs; +import org.argeo.api.acr.ldap.LdapAttrs; +import org.argeo.api.cms.CmsConstants; +import org.argeo.cms.CurrentUser; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; import org.osgi.service.useradmin.UserAdmin; @@ -59,7 +59,7 @@ public class UserAdminUtils { || last.getType().toLowerCase().equals(LdapAttrs.cn.name())) return (String) last.getValue(); else - throw new CmsException("Cannot retrieve user local id, non valid dn: " + dn); + throw new IllegalArgumentException("Cannot retrieve user local id, non valid dn: " + dn); } /** @@ -68,16 +68,19 @@ public class UserAdminUtils { */ public static String getUserDisplayName(UserAdmin userAdmin, String dn) { Role user = userAdmin.getRole(dn); - String dName; if (user == null) - dName = getUserLocalId(dn); - else { - dName = getProperty(user, LdapAttrs.displayName.name()); - if (isEmpty(dName)) - dName = getProperty(user, LdapAttrs.cn.name()); - if (isEmpty(dName)) - dName = getUserLocalId(dn); - } + return getUserLocalId(dn); + return getUserDisplayName(user); + } + + public static String getUserDisplayName(Role user) { + String dName = getProperty(user, LdapAttrs.displayName.name()); + if (isEmpty(dName)) + dName = getProperty(user, LdapAttrs.cn.name()); + if (isEmpty(dName)) + dName = getProperty(user, LdapAttrs.uid.name()); + if (isEmpty(dName)) + dName = getUserLocalId(user.getName()); return dName; } @@ -129,16 +132,16 @@ public class UserAdminUtils { try { return new LdapName(dn); } catch (InvalidNameException e) { - throw new CmsException("Cannot parse LDAP name " + dn, e); + throw new IllegalArgumentException("Cannot parse LDAP name " + dn, e); } } /** Simply retrieves a display name of the relevant domain */ public final static String getDomainName(User user) { String dn = user.getName(); - if (dn.endsWith(NodeConstants.ROLES_BASEDN)) + if (dn.endsWith(CmsConstants.SYSTEM_ROLES_BASEDN)) return "System roles"; - if (dn.endsWith(NodeConstants.TOKENS_BASEDN)) + if (dn.endsWith(CmsConstants.TOKENS_BASEDN)) return "Tokens"; try { // FIXME deal with non-DC @@ -148,7 +151,8 @@ public class UserAdminUtils { int i = 0; loop: while (i < rdns.size()) { Rdn currrRdn = rdns.get(i); - if (!LdapAttrs.dc.name().equals(currrRdn.getType())) + if (LdapAttrs.uid.name().equals(currrRdn.getType()) || LdapAttrs.cn.name().equals(currrRdn.getType()) + || LdapAttrs.ou.name().equals(currrRdn.getType())) break loop; else { String currVal = (String) currrRdn.getValue(); @@ -158,7 +162,7 @@ public class UserAdminUtils { } return dname; } catch (InvalidNameException e) { - throw new CmsException("Unable to get domain name for " + dn, e); + throw new IllegalArgumentException("Unable to get domain name for " + dn, e); } }