Re-add org.argeo.cms.util.useradmin
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 10 Aug 2016 17:52:17 +0000 (17:52 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 10 Aug 2016 17:52:17 +0000 (17:52 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@9085 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

19 files changed:
org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminUtils.java [new file with mode: 0644]
org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java [new file with mode: 0644]
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/AbstractUserAdminWrapper.java [deleted file]
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminUtils.java [deleted file]
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminWrapper.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/DeleteGroups.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/DeleteUsers.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/commands/NewUser.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupMainPage.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupsView.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserBatchUpdateWizard.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserEditor.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UserMainPage.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UsersView.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/CommonNameLP.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/DomainNameLP.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/MailLP.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserAdminAbstractLP.java
org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserFilter.java

diff --git a/org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminUtils.java b/org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminUtils.java
new file mode 100644 (file)
index 0000000..5c197c1
--- /dev/null
@@ -0,0 +1,242 @@
+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.ArgeoException;
+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.osgi.service.useradmin.Group;
+import org.osgi.service.useradmin.Role;
+import org.osgi.service.useradmin.User;
+import org.osgi.service.useradmin.UserAdmin;
+
+/** Centralise common patterns to manage roles with a user admin */
+public class UserAdminUtils {
+
+       /** Retrieves a {@link Role} given a LDAP name */
+       public final static Role getRole(UserAdmin userAdmin, LdapName dn) {
+               Role role = userAdmin.getRole(dn.toString());
+               return role;
+       }
+
+       /** Retrieves the unique local username given a {@link User}. */
+       public final static String getUsername(User user) {
+               String username = null;
+               if (user instanceof Group)
+                       username = getProperty(user, LdifName.cn.name());
+               else
+                       username = getProperty(user, LdifName.uid.name());
+               return username;
+       }
+
+       /**
+        * Easily retrieves one of the {@link Role}'s property or an empty String if
+        * the requested property is not defined
+        */
+       public final static String getProperty(Role role, String key) {
+               Object obj = role.getProperties().get(key);
+               if (obj != null)
+                       return (String) obj;
+               else
+                       return "";
+       }
+
+       // CENTRALIZE SOME METHODS UNTIL API IS STABLE
+       /** Simply checks if current user is registered */
+       public static boolean isRegistered() {
+               return !CurrentUser.isAnonymous();
+       }
+
+       /** Simply checks if current user as a home */
+       public static boolean hasHome() {
+               return isRegistered();
+       }
+
+       // SELF HELPERS
+       /** Simply retrieves the current logged-in user display name. */
+       public static User getCurrentUser(UserAdmin userAdmin) {
+               return (User) getRole(userAdmin, getCurrentUserLdapName());
+       }
+
+       /** Simply retrieves the current logged-in user display name. */
+       public static String getCurrentUserDisplayName(UserAdmin userAdmin) {
+               String username = getCurrentUsername();
+               return getUserDisplayName(userAdmin, username);
+       }
+
+       /** Simply retrieves the current logged-in user display name. */
+       public static String getCurrentUserMail(UserAdmin userAdmin) {
+               String username = getCurrentUsername();
+               return getUserMail(userAdmin, username);
+       }
+
+       /** Returns the local name of the current connected user */
+       public final static String getUsername(UserAdmin userAdmin) {
+               LdapName dn = getCurrentUserLdapName();
+               return getUsername((User) getRole(userAdmin, dn));
+       }
+
+       /** Returns true if the current user is in the specified role */
+       public static boolean isUserInRole(String role) {
+               Set<String> roles = CurrentUser.roles();
+               return roles.contains(role);
+       }
+
+       /** 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());
+               try {
+                       LdapName selfUserName = getCurrentUserLdapName();
+                       LdapName userLdapName = new LdapName(userName);
+                       if (userLdapName.equals(selfUserName))
+                               return true;
+                       else
+                               return false;
+               } catch (InvalidNameException e) {
+                       throw new ArgeoException("User " + user + " has an unvalid dn: "
+                                       + userName, e);
+               }
+       }
+
+       public final static LdapName getCurrentUserLdapName() {
+               String name = getCurrentUsername();
+               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
+        */
+       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
+       /**
+        * Simply retrieves the *relative* path to the current user home node from
+        * the base home node
+        */
+       public static String getCurrentUserHomeRelPath() {
+               return getHomeRelPath(getCurrentUsername());
+       }
+
+       /**
+        * Simply retrieves the *relative* path to the home node of a user given its
+        * userName
+        */
+       public static String getHomeRelPath(String userName) {
+               String id = getUserUid(userName);
+               String currHomePath = JcrUtils.firstCharsToPath(id, 2) + "/" + id;
+               return currHomePath;
+       }
+
+       // HELPERS TO RETRIEVE REMARKABLE PROPERTIES
+       /** Simply retrieves the user uid from his dn with no useradmin */
+       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()))
+                       return (String) last.getValue();
+               else
+                       throw new ArgeoException("Cannot retrieve user uid, "
+                                       + "non valid dn: " + dn);
+       }
+
+       /**
+        * Returns the local username if no user with this dn is found or if the
+        * found user has no defined display name
+        */
+       public static String getUserDisplayName(UserAdmin userAdmin, String dn) {
+               Role user = getRole(userAdmin, getLdapName(dn));
+               if (user == null)
+                       return getUserUid(dn);
+               String displayName = getProperty(user, LdifName.displayName.name());
+               if (EclipseUiUtils.isEmpty(displayName))
+                       displayName = getProperty(user, LdifName.cn.name());
+               if (EclipseUiUtils.isEmpty(displayName))
+                       return getUserUid(dn);
+               else
+                       return displayName;
+       }
+
+       /**
+        * Returns null if no user with this dn is found or if the found user has no
+        * defined mail
+        */
+       public static String getUserMail(UserAdmin userAdmin, String dn) {
+               Role user = getRole(userAdmin, getLdapName(dn));
+               if (user == null)
+                       return null;
+               else
+                       return getProperty(user, LdifName.mail.name());
+       }
+
+       // VARIOUS UI HELPERS
+       public final static String buildDefaultCn(String firstName, String lastName) {
+               return (firstName.trim() + " " + lastName.trim() + " ").trim();
+       }
+
+       /** 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))
+                       return "System roles";
+               try {
+                       LdapName name = new LdapName(dn);
+                       List<Rdn> rdns = name.getRdns();
+                       String dname = null;
+                       int i = 0;
+                       loop: while (i < rdns.size()) {
+                               Rdn currrRdn = rdns.get(i);
+                               if (!LdifName.dc.name().equals(currrRdn.getType()))
+                                       break loop;
+                               else {
+                                       String currVal = (String) currrRdn.getValue();
+                                       dname = dname == null ? currVal : currVal + "." + dname;
+                               }
+                               i++;
+                       }
+                       return dname;
+               } catch (InvalidNameException e) {
+                       throw new ArgeoException("Unable to get domain name for " + dn, e);
+               }
+       }
+
+       // Local Helpers
+       /** Simply retrieves a LDAP name from a dn with no exception */
+       public static LdapName getLdapName(String dn) {
+               try {
+                       return new LdapName(dn);
+               } catch (InvalidNameException e) {
+                       throw new ArgeoException("Cannot parse LDAP name " + dn, e);
+               }
+       }
+}
\ No newline at end of file
diff --git a/org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java b/org.argeo.cms/src/org/argeo/cms/util/useradmin/UserAdminWrapper.java
new file mode 100644 (file)
index 0000000..911b92e
--- /dev/null
@@ -0,0 +1,105 @@
+package org.argeo.cms.util.useradmin;
+
+import java.util.ArrayList;
+import java.util.Dictionary;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.transaction.Status;
+import javax.transaction.UserTransaction;
+
+import org.argeo.ArgeoException;
+import org.argeo.cms.auth.AuthConstants;
+import org.argeo.osgi.useradmin.UserAdminConf;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.useradmin.UserAdmin;
+import org.osgi.service.useradmin.UserAdminEvent;
+import org.osgi.service.useradmin.UserAdminListener;
+
+/**
+ * Base useradmin wrapper. Implementing application might extends to add
+ * business specific behaviour
+ */
+public abstract class UserAdminWrapper {
+       // private Log log = LogFactory.getLog(UserAdminWrapper.class);
+
+       private UserAdmin userAdmin;
+       private ServiceReference<UserAdmin> userAdminServiceReference;
+       private UserTransaction userTransaction;
+
+       /* USER ADMIN LISTENER MANAGEMENT */
+       List<UserAdminListener> listeners = new ArrayList<UserAdminListener>();
+
+       // TODO implement safer mechanism
+       public void addListener(UserAdminListener userAdminListener) {
+               if (!listeners.contains(userAdminListener))
+                       listeners.add(userAdminListener);
+       }
+
+       /**
+        * Starts a transaction if none already exists and notify the userAdmin
+        * listeners.Must be called from the UI Thread.
+        */
+       public UserTransaction beginTransactionIfNeeded() {
+               try {
+                       if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
+                               userTransaction.begin();
+                       }
+                       return userTransaction;
+               } catch (Exception e) {
+                       throw new ArgeoException("Unable to begin transaction", e);
+               }
+       }
+
+       // Expose this?
+       public void removeListener(UserAdminListener userAdminListener) {
+               if (listeners.contains(userAdminListener))
+                       listeners.remove(userAdminListener);
+       }
+
+       public void notifyListeners(UserAdminEvent event) {
+               for (UserAdminListener listener : listeners)
+                       listener.roleChanged(event);
+       }
+
+       public Map<String, String> getKnownBaseDns(boolean onlyWritable) {
+               Map<String, String> dns = new HashMap<String, String>();
+               for (String uri : userAdminServiceReference.getPropertyKeys()) {
+                       if (!uri.startsWith("/"))
+                               continue;
+                       Dictionary<String, ?> props = UserAdminConf.uriAsProperties(uri);
+                       String readOnly = UserAdminConf.readOnly.getValue(props);
+                       String baseDn = UserAdminConf.baseDn.getValue(props);
+
+                       if (onlyWritable && "true".equals(readOnly))
+                               continue;
+                       if (baseDn.equalsIgnoreCase(AuthConstants.ROLES_BASEDN))
+                               continue;
+                       dns.put(baseDn, uri);
+               }
+               return dns;
+       }
+
+       public UserAdmin getUserAdmin() {
+               return userAdmin;
+       }
+
+       public UserTransaction getUserTransaction() {
+               return userTransaction;
+       }
+
+       /* DEPENDENCY INJECTION */
+       public void setUserAdmin(UserAdmin userAdmin) {
+               this.userAdmin = userAdmin;
+       }
+
+       public void setUserTransaction(UserTransaction userTransaction) {
+               this.userTransaction = userTransaction;
+       }
+
+       public void setUserAdminServiceReference(
+                       ServiceReference<UserAdmin> userAdminServiceReference) {
+               this.userAdminServiceReference = userAdminServiceReference;
+       }
+}
\ No newline at end of file
diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/AbstractUserAdminWrapper.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/AbstractUserAdminWrapper.java
deleted file mode 100644 (file)
index e222656..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-package org.argeo.security.ui.admin.internal;
-
-import java.util.ArrayList;
-import java.util.Dictionary;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.transaction.Status;
-import javax.transaction.UserTransaction;
-
-import org.argeo.ArgeoException;
-import org.argeo.cms.auth.AuthConstants;
-import org.argeo.osgi.useradmin.UserAdminConf;
-import org.osgi.framework.ServiceReference;
-import org.osgi.service.useradmin.UserAdmin;
-import org.osgi.service.useradmin.UserAdminEvent;
-import org.osgi.service.useradmin.UserAdminListener;
-
-/**
- * Base useradmin wrapper. Implementing application might extends to add
- * business specific behaviour
- */
-public abstract class AbstractUserAdminWrapper {
-       // private Log log = LogFactory.getLog(UserAdminWrapper.class);
-
-       private UserAdmin userAdmin;
-       private ServiceReference<UserAdmin> userAdminServiceReference;
-       private UserTransaction userTransaction;
-
-       /* USER ADMIN LISTENER MANAGEMENT */
-       List<UserAdminListener> listeners = new ArrayList<UserAdminListener>();
-
-       // TODO implement safer mechanism
-       public void addListener(UserAdminListener userAdminListener) {
-               if (!listeners.contains(userAdminListener))
-                       listeners.add(userAdminListener);
-       }
-
-       /**
-        * Starts a transaction if none already exists and notify the userAdmin
-        * listeners.Must be called from the UI Thread.
-        */
-       public UserTransaction beginTransactionIfNeeded() {
-               try {
-                       if (userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION) {
-                               userTransaction.begin();
-                       }
-                       return userTransaction;
-               } catch (Exception e) {
-                       throw new ArgeoException("Unable to begin transaction", e);
-               }
-       }
-
-       // Expose this?
-       public void removeListener(UserAdminListener userAdminListener) {
-               if (listeners.contains(userAdminListener))
-                       listeners.remove(userAdminListener);
-       }
-
-       public void notifyListeners(UserAdminEvent event) {
-               for (UserAdminListener listener : listeners)
-                       listener.roleChanged(event);
-       }
-
-       public Map<String, String> getKnownBaseDns(boolean onlyWritable) {
-               Map<String, String> dns = new HashMap<String, String>();
-               for (String uri : userAdminServiceReference.getPropertyKeys()) {
-                       if (!uri.startsWith("/"))
-                               continue;
-                       Dictionary<String, ?> props = UserAdminConf.uriAsProperties(uri);
-                       String readOnly = UserAdminConf.readOnly.getValue(props);
-                       String baseDn = UserAdminConf.baseDn.getValue(props);
-
-                       if (onlyWritable && "true".equals(readOnly))
-                               continue;
-                       if (baseDn.equalsIgnoreCase(AuthConstants.ROLES_BASEDN))
-                               continue;
-                       dns.put(baseDn, uri);
-               }
-               return dns;
-       }
-
-       public UserAdmin getUserAdmin() {
-               return userAdmin;
-       }
-
-       public UserTransaction getUserTransaction() {
-               return userTransaction;
-       }
-
-       /* DEPENDENCY INJECTION */
-       public void setUserAdmin(UserAdmin userAdmin) {
-               this.userAdmin = userAdmin;
-       }
-
-       public void setUserTransaction(UserTransaction userTransaction) {
-               this.userTransaction = userTransaction;
-       }
-
-       public void setUserAdminServiceReference(
-                       ServiceReference<UserAdmin> userAdminServiceReference) {
-               this.userAdminServiceReference = userAdminServiceReference;
-       }
-}
\ No newline at end of file
diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminUtils.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/UserAdminUtils.java
deleted file mode 100644 (file)
index 0fc4fc1..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-package org.argeo.security.ui.admin.internal;
-
-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.ArgeoException;
-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.osgi.service.useradmin.Group;
-import org.osgi.service.useradmin.Role;
-import org.osgi.service.useradmin.User;
-import org.osgi.service.useradmin.UserAdmin;
-
-/** Centralise common patterns to manage roles with a user admin */
-public class UserAdminUtils {
-
-       /** Retrieves a {@link Role} given a LDAP name */
-       public final static Role getRole(UserAdmin userAdmin, LdapName dn) {
-               Role role = userAdmin.getRole(dn.toString());
-               return role;
-       }
-
-       /** Retrieves the unique local username given a {@link User}. */
-       public final static String getUsername(User user) {
-               String username = null;
-               if (user instanceof Group)
-                       username = getProperty(user, LdifName.cn.name());
-               else
-                       username = getProperty(user, LdifName.uid.name());
-               return username;
-       }
-
-       /**
-        * Easily retrieves one of the {@link Role}'s property or an empty String if
-        * the requested property is not defined
-        */
-       public final static String getProperty(Role role, String key) {
-               Object obj = role.getProperties().get(key);
-               if (obj != null)
-                       return (String) obj;
-               else
-                       return "";
-       }
-
-       // CENTRALIZE SOME METHODS UNTIL API IS STABLE
-       /** Simply checks if current user is registered */
-       public static boolean isRegistered() {
-               return !CurrentUser.isAnonymous();
-       }
-
-       /** Simply checks if current user as a home */
-       public static boolean hasHome() {
-               return isRegistered();
-       }
-
-       // SELF HELPERS
-       /** Simply retrieves the current logged-in user display name. */
-       public static User getCurrentUser(UserAdmin userAdmin) {
-               return (User) getRole(userAdmin, getCurrentUserLdapName());
-       }
-
-       /** Simply retrieves the current logged-in user display name. */
-       public static String getCurrentUserDisplayName(UserAdmin userAdmin) {
-               String username = getCurrentUsername();
-               return getUserDisplayName(userAdmin, username);
-       }
-
-       /** Simply retrieves the current logged-in user display name. */
-       public static String getCurrentUserMail(UserAdmin userAdmin) {
-               String username = getCurrentUsername();
-               return getUserMail(userAdmin, username);
-       }
-
-       /** Returns the local name of the current connected user */
-       public final static String getUsername(UserAdmin userAdmin) {
-               LdapName dn = getCurrentUserLdapName();
-               return getUsername((User) getRole(userAdmin, dn));
-       }
-
-       /** Returns true if the current user is in the specified role */
-       public static boolean isUserInRole(String role) {
-               Set<String> roles = CurrentUser.roles();
-               return roles.contains(role);
-       }
-
-       /** 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());
-               try {
-                       LdapName selfUserName = getCurrentUserLdapName();
-                       LdapName userLdapName = new LdapName(userName);
-                       if (userLdapName.equals(selfUserName))
-                               return true;
-                       else
-                               return false;
-               } catch (InvalidNameException e) {
-                       throw new ArgeoException("User " + user + " has an unvalid dn: "
-                                       + userName, e);
-               }
-       }
-
-       public final static LdapName getCurrentUserLdapName() {
-               String name = getCurrentUsername();
-               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
-        */
-       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
-       /**
-        * Simply retrieves the *relative* path to the current user home node from
-        * the base home node
-        */
-       public static String getCurrentUserHomeRelPath() {
-               return getHomeRelPath(getCurrentUsername());
-       }
-
-       /**
-        * Simply retrieves the *relative* path to the home node of a user given its
-        * userName
-        */
-       public static String getHomeRelPath(String userName) {
-               String id = getUserUid(userName);
-               String currHomePath = JcrUtils.firstCharsToPath(id, 2) + "/" + id;
-               return currHomePath;
-       }
-
-       // HELPERS TO RETRIEVE REMARKABLE PROPERTIES
-       /** Simply retrieves the user uid from his dn with no useradmin */
-       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()))
-                       return (String) last.getValue();
-               else
-                       throw new ArgeoException("Cannot retrieve user uid, "
-                                       + "non valid dn: " + dn);
-       }
-
-       /**
-        * Returns the local username if no user with this dn is found or if the
-        * found user has no defined display name
-        */
-       public static String getUserDisplayName(UserAdmin userAdmin, String dn) {
-               Role user = getRole(userAdmin, getLdapName(dn));
-               if (user == null)
-                       return getUserUid(dn);
-               String displayName = getProperty(user, LdifName.displayName.name());
-               if (EclipseUiUtils.isEmpty(displayName))
-                       displayName = getProperty(user, LdifName.cn.name());
-               if (EclipseUiUtils.isEmpty(displayName))
-                       return getUserUid(dn);
-               else
-                       return displayName;
-       }
-
-       /**
-        * Returns null if no user with this dn is found or if the found user has no
-        * defined mail
-        */
-       public static String getUserMail(UserAdmin userAdmin, String dn) {
-               Role user = getRole(userAdmin, getLdapName(dn));
-               if (user == null)
-                       return null;
-               else
-                       return getProperty(user, LdifName.mail.name());
-       }
-
-       // VARIOUS UI HELPERS
-       public final static String buildDefaultCn(String firstName, String lastName) {
-               return (firstName.trim() + " " + lastName.trim() + " ").trim();
-       }
-
-       /** 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))
-                       return "System roles";
-               try {
-                       LdapName name = new LdapName(dn);
-                       List<Rdn> rdns = name.getRdns();
-                       String dname = null;
-                       int i = 0;
-                       loop: while (i < rdns.size()) {
-                               Rdn currrRdn = rdns.get(i);
-                               if (!LdifName.dc.name().equals(currrRdn.getType()))
-                                       break loop;
-                               else {
-                                       String currVal = (String) currrRdn.getValue();
-                                       dname = dname == null ? currVal : currVal + "." + dname;
-                               }
-                               i++;
-                       }
-                       return dname;
-               } catch (InvalidNameException e) {
-                       throw new ArgeoException("Unable to get domain name for " + dn, e);
-               }
-       }
-
-       // Local Helpers
-       /** Simply retrieves a LDAP name from a dn with no exception */
-       public static LdapName getLdapName(String dn) {
-               try {
-                       return new LdapName(dn);
-               } catch (InvalidNameException e) {
-                       throw new ArgeoException("Cannot parse LDAP name " + dn, e);
-               }
-       }
-}
\ No newline at end of file
index ff4018a2c6dcaf9c16220a37f96a4d17d9c2d687..43ce58da9fba74bb7f06c0ea9bb7a3b5f8acd551 100644 (file)
@@ -12,7 +12,7 @@ import org.osgi.service.useradmin.UserAdminListener;
 
 /** Centralize interaction with the UserAdmin in this bundle */
 public class UserAdminWrapper extends
-               org.argeo.security.ui.admin.internal.AbstractUserAdminWrapper {
+               org.argeo.cms.util.useradmin.UserAdminWrapper {
        // private Log log = LogFactory.getLog(UserAdminWrapper.class);
 
        // Registered listeners
index d21cc48b153ff3b2fef922ae655ac8e1d353f850..868aa0fc7f6a3239ad5591f1b2cb315d63f4b94b 100644 (file)
@@ -19,8 +19,8 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.parts.UserEditorInput;
 import org.eclipse.core.commands.AbstractHandler;
index 3e2644f6fb06c7b088c00bae36cd6716a174b508..87da43cdf14f7495c14ee3ba45837baf9cb014d3 100644 (file)
@@ -19,8 +19,8 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.parts.UserEditorInput;
 import org.eclipse.core.commands.AbstractHandler;
index 77230390bd2b81b99883962c59b6d276c4d871db..e408b1bee1793163eca3aead29d2831c6e4d14b3 100644 (file)
@@ -24,13 +24,13 @@ import javax.naming.ldap.LdapName;
 import javax.naming.ldap.Rdn;
 
 import org.argeo.ArgeoException;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
 import org.argeo.jcr.ArgeoNames;
 import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.osgi.useradmin.UserAdminConf;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
index 9527479885ad27003ac024c75870c2051ca91412..4a441a1a2d4a3c19651d7dfef7ba4e28528150bb 100644 (file)
@@ -19,13 +19,13 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
 import org.argeo.jcr.ArgeoNames;
 import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.security.ui.admin.SecurityAdminImages;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.parts.UserEditor.GroupChangeListener;
 import org.argeo.security.ui.admin.internal.parts.UserEditor.MainInfoListener;
index 620e1d37886eb1c661c8bfe17241f8ff031fa336..6b193f4441551b2e195e2e28527081bbefa09069 100644 (file)
@@ -22,6 +22,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.cms.auth.AuthConstants;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
@@ -29,7 +30,6 @@ import org.argeo.jcr.ArgeoNames;
 import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
 import org.argeo.security.ui.admin.internal.UiUserAdminListener;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.providers.CommonNameLP;
 import org.argeo.security.ui.admin.internal.providers.DomainNameLP;
index 6f581853c3641084b6d1771dea3bbeb4004e8827..d2dbadd085db8338f8ca52e322e673808d986032 100644 (file)
@@ -12,13 +12,13 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.ArgeoException;
 import org.argeo.cms.auth.AuthConstants;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
 import org.argeo.jcr.ArgeoNames;
 import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.security.ui.admin.internal.UiAdminUtils;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.providers.CommonNameLP;
 import org.argeo.security.ui.admin.internal.providers.DomainNameLP;
index 796d2cdd45c6f77e10402a97a248e557e95eff9e..715d343105f302c580b0d6e26f98176775aaf85a 100644 (file)
@@ -19,10 +19,10 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.argeo.ArgeoException;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
 import org.argeo.security.ui.admin.internal.UiUserAdminListener;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.events.ModifyEvent;
index 06b430f74920c848d647b460dcc76f67a35279f0..833ae32a78513013b730c4b20ac070b63487a954 100644 (file)
@@ -21,13 +21,13 @@ import java.util.List;
 
 import org.argeo.ArgeoException;
 import org.argeo.cms.auth.AuthConstants;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
 import org.argeo.jcr.ArgeoNames;
 import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.security.ui.admin.SecurityAdminImages;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.parts.UserEditor.GroupChangeListener;
 import org.argeo.security.ui.admin.internal.parts.UserEditor.MainInfoListener;
index 5bb50a40f654d92b1484221b2963f8dcfb707ef3..edafa28511d34c993a326b5ba84b7cec6a378780 100644 (file)
@@ -20,6 +20,7 @@ import java.util.List;
 
 import org.argeo.ArgeoException;
 import org.argeo.cms.auth.AuthConstants;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
@@ -27,7 +28,6 @@ import org.argeo.jcr.ArgeoNames;
 import org.argeo.osgi.useradmin.LdifName;
 import org.argeo.security.ui.admin.SecurityAdminPlugin;
 import org.argeo.security.ui.admin.internal.UiUserAdminListener;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.argeo.security.ui.admin.internal.UserAdminWrapper;
 import org.argeo.security.ui.admin.internal.providers.CommonNameLP;
 import org.argeo.security.ui.admin.internal.providers.DomainNameLP;
index 5b6fbdd3eaa5fc822942257e4c00c9cb30d37c21..d45c0b603d1e7d30fd47683caea323602e4e5acd 100644 (file)
@@ -1,7 +1,7 @@
 package org.argeo.security.ui.admin.internal.providers;
 
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.osgi.useradmin.LdifName;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.osgi.service.useradmin.User;
 
 /** Simply declare a label provider that returns the common name of a user */
index b1d84a155501fa58286a8b52d6a9f8003a0b20a8..795fd0af3fe6b3cb728c4658fcd86156c34355d6 100644 (file)
@@ -1,6 +1,6 @@
 package org.argeo.security.ui.admin.internal.providers;
 
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.osgi.service.useradmin.User;
 
 /** The human friendly domain name for the corresponding user. */
index d24cab67a9730d5753764dbd0d661f0d8199442c..0a6dcb604f8dd264f2d879efdbffbb3fe48a9818 100644 (file)
@@ -1,7 +1,7 @@
 package org.argeo.security.ui.admin.internal.providers;
 
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.osgi.useradmin.LdifName;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.osgi.service.useradmin.User;
 
 /** Simply declare a label provider that returns the Primary Mail of a user */
index 5ca476a7d493dbc1335a9dc81ad7395b40c9fb67..39bac0a2af4a4ae114430747d1bcfa19659445c0 100644 (file)
@@ -4,7 +4,7 @@ import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
 
 import org.argeo.ArgeoException;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.swt.SWT;
index 2a230dd6bff99cb8b722dc7eb0617d8a9c0294c5..5f753d1c369c21c0f8204da06cdbafa446ab0475 100644 (file)
@@ -3,8 +3,8 @@ package org.argeo.security.ui.admin.internal.providers;
 import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
 
 import org.argeo.cms.auth.AuthConstants;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.osgi.useradmin.LdifName;
-import org.argeo.security.ui.admin.internal.UserAdminUtils;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.osgi.service.useradmin.User;