X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Fauth%2FUserAdminUtils.java;h=bef6d7f0a187718c914fc6084f193a3aa7e29137;hb=e4a5502f49e2a2c35d16bbc96efdffead1362a76;hp=326b0f4da3bc62ee6486e3b556397473b8479433;hpb=b7c2f2cc2f6f74762031567e9e636ff277ebc7c7;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 326b0f4da..bef6d7f0a 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.cms.CmsException; -import org.argeo.naming.LdapAttrs; -import org.argeo.node.NodeConstants; +import org.argeo.api.acr.ldap.LdapAttr; +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; @@ -19,7 +19,7 @@ public class UserAdminUtils { // CURRENTUSER HELPERS /** Checks if current user is the same as the passed one */ public static boolean isCurrentUser(User user) { - String userUsername = getProperty(user, LdapAttrs.DN); + String userUsername = getProperty(user, LdapAttr.DN); LdapName userLdapName = getLdapName(userUsername); LdapName selfUserName = getCurrentUserLdapName(); return userLdapName.equals(selfUserName); @@ -44,7 +44,7 @@ public class UserAdminUtils { /** Retrieves the current logged-in user common name */ public final static String getCommonName(User user) { - return getProperty(user, LdapAttrs.cn.name()); + return getProperty(user, LdapAttr.cn.name()); } // OTHER USERS HELPERS @@ -55,11 +55,11 @@ public class UserAdminUtils { public static String getUserLocalId(String dn) { LdapName ldapName = getLdapName(dn); Rdn last = ldapName.getRdn(ldapName.size() - 1); - if (last.getType().toLowerCase().equals(LdapAttrs.uid.name()) - || last.getType().toLowerCase().equals(LdapAttrs.cn.name())) + if (last.getType().toLowerCase().equals(LdapAttr.uid.name()) + || last.getType().toLowerCase().equals(LdapAttr.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, LdapAttr.displayName.name()); + if (isEmpty(dName)) + dName = getProperty(user, LdapAttr.cn.name()); + if (isEmpty(dName)) + dName = getProperty(user, LdapAttr.uid.name()); + if (isEmpty(dName)) + dName = getUserLocalId(user.getName()); return dName; } @@ -90,7 +93,7 @@ public class UserAdminUtils { if (user == null) return null; else - return getProperty(user, LdapAttrs.mail.name()); + return getProperty(user, LdapAttr.mail.name()); } // LDAP NAMES HELPERS @@ -123,22 +126,22 @@ public class UserAdminUtils { } /** - * Simply retrieves a LDAP name from a {@link LdapAttrs.DN} with no exception + * Simply retrieves a LDAP name from a {@link LdapAttr.DN} with no exception */ private static LdapName getLdapName(String dn) { 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 (LdapAttr.uid.name().equals(currrRdn.getType()) || LdapAttr.cn.name().equals(currrRdn.getType()) + || LdapAttr.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); } }