X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ui%2Fsrc%2Forg%2Fargeo%2Fcms%2Futil%2Fuseradmin%2FUserAdminUtils.java;h=fdd61d69dd461f7a6af2100305a145d12fb8d005;hb=7e333073d07b780efe681306a1842a750cbea83c;hp=9ccc3057f3a355d66d369cdd06f3bd5633f2567f;hpb=972528f4de2d00690362c01d3ce843ca9cd10250;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java index 9ccc3057f..fdd61d69d 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java @@ -1,23 +1,18 @@ package org.argeo.cms.util.useradmin; -import java.security.AccessController; import java.util.List; import java.util.Set; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; import javax.naming.ldap.Rdn; -import javax.security.auth.Subject; -import javax.security.auth.x500.X500Principal; import org.argeo.cms.CmsException; -import org.argeo.cms.CmsView; -import org.argeo.cms.auth.AuthConstants; import org.argeo.cms.auth.CurrentUser; -import org.argeo.cms.util.CmsUtils; import org.argeo.eclipse.ui.EclipseUiUtils; import org.argeo.jcr.JcrUtils; -import org.argeo.osgi.useradmin.LdifName; +import org.argeo.naming.LdapAttrs; +import org.argeo.node.NodeConstants; import org.osgi.service.useradmin.Group; import org.osgi.service.useradmin.Role; import org.osgi.service.useradmin.User; @@ -36,9 +31,9 @@ public class UserAdminUtils { public final static String getUsername(User user) { String username = null; if (user instanceof Group) - username = getProperty(user, LdifName.cn.name()); + username = getProperty(user, LdapAttrs.cn.name()); else - username = getProperty(user, LdifName.uid.name()); + username = getProperty(user, LdapAttrs.uid.name()); return username; } @@ -73,13 +68,13 @@ public class UserAdminUtils { /** Simply retrieves the current logged-in user display name. */ public static String getCurrentUserDisplayName(UserAdmin userAdmin) { - String username = getCurrentUsername(); + String username = CurrentUser.getUsername(); return getUserDisplayName(userAdmin, username); } /** Simply retrieves the current logged-in user display name. */ public static String getCurrentUserMail(UserAdmin userAdmin) { - String username = getCurrentUsername(); + String username = CurrentUser.getUsername(); return getUserMail(userAdmin, username); } @@ -97,7 +92,7 @@ public class UserAdminUtils { /** Simply checks if current user is the same as the passed one */ public static boolean isCurrentUser(User user) { - String userName = getProperty(user, LdifName.dn.name()); + String userName = getProperty(user, LdapAttrs.DN); try { LdapName selfUserName = getCurrentUserLdapName(); LdapName userLdapName = new LdapName(userName); @@ -106,37 +101,38 @@ public class UserAdminUtils { else return false; } catch (InvalidNameException e) { - throw new CmsException("User " + user + " has an unvalid dn: " - + userName, e); + throw new CmsException("User " + user + " has an unvalid dn: " + userName, e); } } public final static LdapName getCurrentUserLdapName() { - String name = getCurrentUsername(); + String name = CurrentUser.getUsername(); return getLdapName(name); } - /** Simply retrieves username for current user, generally a LDAP dn */ - public static String getCurrentUsername() { - Subject subject = currentSubject(); - String name = subject.getPrincipals(X500Principal.class).iterator() - .next().toString(); - return name; - } - /** - * Fork of the {@link CurrentUser#currentSubject} method that is private. - * TODO Enhance and factorize + * Simply retrieves username for current user, generally a LDAP dn + * + * @deprecated Use {@link CurrentUser#getUsername()} */ - private static Subject currentSubject() { - CmsView cmsView = CmsUtils.getCmsView(); - if (cmsView != null) - return cmsView.getSubject(); - Subject subject = Subject.getSubject(AccessController.getContext()); - if (subject != null) - return subject; - throw new RuntimeException("Cannot find related subject"); - } + @Deprecated + public static String getCurrentUsername() { + return CurrentUser.getUsername(); + } + + // /** + // * Fork of the {@link CurrentUser#currentSubject} method that is private. + // * TODO Enhance and factorize + // */ + // private static Subject currentSubject() { + // CmsView cmsView = CmsUtils.getCmsView(); + // if (cmsView != null) + // return cmsView.getSubject(); + // Subject subject = Subject.getSubject(AccessController.getContext()); + // if (subject != null) + // return subject; + // throw new RuntimeException("Cannot find related subject"); + // } // HOME MANAGEMENT /** @@ -144,7 +140,7 @@ public class UserAdminUtils { * the base home node */ public static String getCurrentUserHomeRelPath() { - return getHomeRelPath(getCurrentUsername()); + return getHomeRelPath(CurrentUser.getUsername()); } /** @@ -162,12 +158,11 @@ public class UserAdminUtils { public static String getUserUid(String dn) { LdapName ldapName = getLdapName(dn); Rdn last = ldapName.getRdn(ldapName.size() - 1); - if (last.getType().toLowerCase().equals(LdifName.uid.name()) - || last.getType().toLowerCase().equals(LdifName.cn.name())) + if (last.getType().toLowerCase().equals(LdapAttrs.uid.name()) + || last.getType().toLowerCase().equals(LdapAttrs.cn.name())) return (String) last.getValue(); else - throw new CmsException("Cannot retrieve user uid, " - + "non valid dn: " + dn); + throw new CmsException("Cannot retrieve user uid, " + "non valid dn: " + dn); } /** @@ -178,9 +173,9 @@ public class UserAdminUtils { Role user = getRole(userAdmin, getLdapName(dn)); if (user == null) return getUserUid(dn); - String displayName = getProperty(user, LdifName.displayName.name()); + String displayName = getProperty(user, LdapAttrs.displayName.name()); if (EclipseUiUtils.isEmpty(displayName)) - displayName = getProperty(user, LdifName.cn.name()); + displayName = getProperty(user, LdapAttrs.cn.name()); if (EclipseUiUtils.isEmpty(displayName)) return getUserUid(dn); else @@ -196,7 +191,7 @@ public class UserAdminUtils { if (user == null) return null; else - return getProperty(user, LdifName.mail.name()); + return getProperty(user, LdapAttrs.mail.name()); } // VARIOUS UI HELPERS @@ -207,7 +202,7 @@ public class UserAdminUtils { /** Simply retrieves a display name of the relevant domain */ public final static String getDomainName(User user) { String dn = user.getName(); - if (dn.endsWith(AuthConstants.ROLES_BASEDN)) + if (dn.endsWith(NodeConstants.ROLES_BASEDN)) return "System roles"; try { LdapName name = new LdapName(dn); @@ -216,7 +211,7 @@ public class UserAdminUtils { int i = 0; loop: while (i < rdns.size()) { Rdn currrRdn = rdns.get(i); - if (!LdifName.dc.name().equals(currrRdn.getType())) + if (!LdapAttrs.dc.name().equals(currrRdn.getType())) break loop; else { String currVal = (String) currrRdn.getValue(); @@ -239,4 +234,4 @@ public class UserAdminUtils { throw new CmsException("Cannot parse LDAP name " + dn, e); } } -} \ No newline at end of file +}