Refactor and clean userAdminUtils
authorBruno Sinou <bsinou@argeo.org>
Tue, 25 Oct 2016 15:45:06 +0000 (15:45 +0000)
committerBruno Sinou <bsinou@argeo.org>
Tue, 25 Oct 2016 15:45:06 +0000 (15:45 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@9284 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

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

index 59a76226e557e0abe19ae9745f4b2b63f772d646..3e8d12fc2500f5b451502f47fbc9ff866784fa93 100644 (file)
@@ -22,7 +22,7 @@ import java.util.List;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditorInput;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
@@ -38,8 +38,7 @@ import org.osgi.service.useradmin.UserAdminEvent;
 
 /** Delete the selected groups */
 public class DeleteGroups extends AbstractHandler {
-       public final static String ID = WorkbenchUiPlugin.PLUGIN_ID
-                       + ".deleteGroups";
+       public final static String ID = WorkbenchUiPlugin.PLUGIN_ID + ".deleteGroups";
 
        /* DEPENDENCY INJECTION */
        private UserAdminWrapper userAdminWrapper;
@@ -55,22 +54,19 @@ public class DeleteGroups extends AbstractHandler {
                StringBuilder builder = new StringBuilder();
                while (it.hasNext()) {
                        Group currGroup = it.next();
-                       String groupName = UserAdminUtils.getUsername(currGroup);
+                       String groupName = UserAdminUtils.getUserLocalId(currGroup.getName());
                        // TODO add checks
                        builder.append(groupName).append("; ");
                        groups.add(currGroup);
                }
 
-               if (!MessageDialog.openQuestion(HandlerUtil.getActiveShell(event),
-                               "Delete Groups",
-                               "Are you sure that you " + "want to delete these groups?\n"
-                                               + builder.substring(0, builder.length() - 2)))
+               if (!MessageDialog.openQuestion(HandlerUtil.getActiveShell(event), "Delete Groups", "Are you sure that you "
+                               + "want to delete these groups?\n" + builder.substring(0, builder.length() - 2)))
                        return null;
 
                userAdminWrapper.beginTransactionIfNeeded();
                UserAdmin userAdmin = userAdminWrapper.getUserAdmin();
-               IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event)
-                               .getActivePage();
+               IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
                for (Group group : groups) {
                        String groupName = group.getName();
                        // TODO find a way to close the editor cleanly if opened. Cannot be
@@ -86,8 +82,7 @@ public class DeleteGroups extends AbstractHandler {
 
                // Update the view
                for (Group group : groups) {
-                       userAdminWrapper.notifyListeners(new UserAdminEvent(null,
-                                       UserAdminEvent.ROLE_REMOVED, group));
+                       userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, group));
                }
 
                return null;
index cec30f02a3aab49780bed4aa8436afe52976140b..ee366483aed1b9c4d8030ded6a8daf92b7939ec2 100644 (file)
@@ -22,7 +22,7 @@ import java.util.List;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditorInput;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
@@ -55,10 +55,9 @@ public class DeleteUsers extends AbstractHandler {
 
                while (it.hasNext()) {
                        User currUser = it.next();
-                       String userName = UserAdminUtils.getUsername(currUser);
+                       String userName = UserAdminUtils.getUserLocalId(currUser.getName());
                        if (UserAdminUtils.isCurrentUser(currUser)) {
-                               MessageDialog.openError(HandlerUtil.getActiveShell(event),
-                                               "Deletion forbidden",
+                               MessageDialog.openError(HandlerUtil.getActiveShell(event), "Deletion forbidden",
                                                "You cannot delete your own user this way.");
                                return null;
                        }
@@ -66,17 +65,13 @@ public class DeleteUsers extends AbstractHandler {
                        users.add(currUser);
                }
 
-               if (!MessageDialog.openQuestion(
-                               HandlerUtil.getActiveShell(event),
-                               "Delete Users",
-                               "Are you sure that you want to delete these users?\n"
-                                               + builder.substring(0, builder.length() - 2)))
+               if (!MessageDialog.openQuestion(HandlerUtil.getActiveShell(event), "Delete Users",
+                               "Are you sure that you want to delete these users?\n" + builder.substring(0, builder.length() - 2)))
                        return null;
 
                userAdminWrapper.beginTransactionIfNeeded();
                UserAdmin userAdmin = userAdminWrapper.getUserAdmin();
-               IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event)
-                               .getActivePage();
+               IWorkbenchPage iwp = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
 
                for (User user : users) {
                        String userName = user.getName();
@@ -92,8 +87,7 @@ public class DeleteUsers extends AbstractHandler {
                userAdminWrapper.commitOrNotifyTransactionStateChange();
 
                for (User user : users) {
-                       userAdminWrapper.notifyListeners(new UserAdminEvent(null,
-                                       UserAdminEvent.ROLE_REMOVED, user));
+                       userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_REMOVED, user));
                }
                return null;
        }
index a5a41f5016a5bbc9322b19938a3a227069a965a8..e6072f178577e25a22ff85113aaa4c196031fb20 100644 (file)
@@ -26,7 +26,7 @@ import javax.naming.ldap.Rdn;
 import org.argeo.cms.CmsException;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.dialogs.ErrorFeedback;
 import org.argeo.naming.LdapAttrs;
index 306f88cce5e8a78243735a2758b74ea3e5fd7576..6fe6e1ab29466f71b3334ccb011878a47f18f88f 100644 (file)
@@ -32,7 +32,7 @@ import org.argeo.cms.ui.workbench.internal.useradmin.providers.RoleIconLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserFilter;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
index 8cb284134b8189b6e5879bb15e65c15c9c735414..6ae12d9dfd1deabb6af8c044d21e0d5785c0dcbc 100644 (file)
@@ -21,6 +21,7 @@ import java.util.List;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UiUserAdminListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
@@ -30,7 +31,6 @@ import org.argeo.cms.ui.workbench.internal.useradmin.providers.RoleIconLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserDragListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-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;
@@ -75,7 +75,7 @@ public class GroupsView extends ViewPart implements ArgeoNames {
        public void createPartControl(Composite parent) {
                parent.setLayout(EclipseUiUtils.noSpaceGridLayout());
 
-               boolean isAdmin = UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN);
+               boolean isAdmin = CurrentUser.isInRole(NodeConstants.ROLE_ADMIN);
 
                // Define the displayed columns
                columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 26));
index 19039fa0f9128a8cc52ea9140e88ef131dd7678a..4fade3804cedbae3e8053118dd7c0e140581f761 100644 (file)
@@ -11,12 +11,13 @@ import javax.transaction.UserTransaction;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.CommonNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.DomainNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.MailLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
@@ -415,7 +416,7 @@ public class UserBatchUpdateWizard extends Wizard {
                                        200));
 
                        // Only show technical DN to admin
-                       if (UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN))
+                       if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
                                columnDefs.add(new ColumnDefinition(new UserNameLP(),
                                                "Distinguished Name", 300));
 
@@ -530,7 +531,7 @@ public class UserBatchUpdateWizard extends Wizard {
                        columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain",
                                        200));
                        // Only show technical DN to admin
-                       if (UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN))
+                       if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
                                columnDefs.add(new ColumnDefinition(new UserNameLP(),
                                                "Distinguished Name", 300));
                        userTableCmp = new ChosenUsersTableViewer(pageCmp, SWT.MULTI
index 41fadac4eb27e7d4092921522a7a9170f059ed78..c63e120ec3b5642fb16e74c7d1ac3bd19f711149 100644 (file)
@@ -22,7 +22,7 @@ import org.argeo.cms.CmsException;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UiUserAdminListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.naming.LdapAttrs;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.swt.events.ModifyEvent;
index 13a7196a5ebd53808114712d97af451856cc6520..f7b4ef7585282109f01a938561634be06508e7ae 100644 (file)
@@ -20,6 +20,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.ui.workbench.internal.useradmin.SecurityAdminImages;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
 import org.argeo.cms.ui.workbench.internal.useradmin.parts.UserEditor.GroupChangeListener;
@@ -30,7 +31,7 @@ import org.argeo.cms.ui.workbench.internal.useradmin.providers.RoleIconLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserFilter;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.eclipse.ui.ColumnDefinition;
 import org.argeo.eclipse.ui.EclipseUiUtils;
 import org.argeo.eclipse.ui.parts.LdifUsersTable;
@@ -129,11 +130,9 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                final Text firstName = createLT(tk, body, "First name",
                                UserAdminUtils.getProperty(user, LdapAttrs.givenName.name()));
 
-               final Text lastName = createLT(tk, body, "Last name",
-                               UserAdminUtils.getProperty(user, LdapAttrs.sn.name()));
+               final Text lastName = createLT(tk, body, "Last name", UserAdminUtils.getProperty(user, LdapAttrs.sn.name()));
 
-               final Text email = createLT(tk, body, "Email",
-                               UserAdminUtils.getProperty(user, LdapAttrs.mail.name()));
+               final Text email = createLT(tk, body, "Email", UserAdminUtils.getProperty(user, LdapAttrs.mail.name()));
 
                // create form part (controller)
                AbstractFormPart part = new SectionPart((Section) body.getParent()) {
@@ -142,8 +141,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        @Override
                        public void initialize(IManagedForm form) {
                                super.initialize(form);
-                               listener = editor.new MainInfoListener(parent.getDisplay(),
-                                               this);
+                               listener = editor.new MainInfoListener(parent.getDisplay(), this);
                                userAdminWrapper.addListener(listener);
                        }
 
@@ -156,29 +154,20 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        @SuppressWarnings("unchecked")
                        public void commit(boolean onSave) {
                                // TODO Sanity checks (mail validity...)
-                               user.getProperties().put(LdapAttrs.givenName.name(),
-                                               firstName.getText());
-                               user.getProperties().put(LdapAttrs.sn.name(),
-                                               lastName.getText());
-                               user.getProperties().put(LdapAttrs.cn.name(),
-                                               commonName.getText());
-                               user.getProperties()
-                                               .put(LdapAttrs.mail.name(), email.getText());
+                               user.getProperties().put(LdapAttrs.givenName.name(), firstName.getText());
+                               user.getProperties().put(LdapAttrs.sn.name(), lastName.getText());
+                               user.getProperties().put(LdapAttrs.cn.name(), commonName.getText());
+                               user.getProperties().put(LdapAttrs.mail.name(), email.getText());
                                super.commit(onSave);
                        }
 
                        @Override
                        public void refresh() {
-                               distinguishedName.setText(UserAdminUtils.getProperty(user,
-                                               LdapAttrs.uid.name()));
-                               commonName.setText(UserAdminUtils.getProperty(user,
-                                               LdapAttrs.cn.name()));
-                               firstName.setText(UserAdminUtils.getProperty(user,
-                                               LdapAttrs.givenName.name()));
-                               lastName.setText(UserAdminUtils.getProperty(user,
-                                               LdapAttrs.sn.name()));
-                               email.setText(UserAdminUtils.getProperty(user,
-                                               LdapAttrs.mail.name()));
+                               distinguishedName.setText(UserAdminUtils.getProperty(user, LdapAttrs.uid.name()));
+                               commonName.setText(UserAdminUtils.getProperty(user, LdapAttrs.cn.name()));
+                               firstName.setText(UserAdminUtils.getProperty(user, LdapAttrs.givenName.name()));
+                               lastName.setText(UserAdminUtils.getProperty(user, LdapAttrs.sn.name()));
+                               email.setText(UserAdminUtils.getProperty(user, LdapAttrs.mail.name()));
                                refreshFormTitle(user);
                                super.refresh();
                        }
@@ -225,8 +214,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                AbstractFormPart part = new SectionPart((Section) body.getParent()) {
                        @SuppressWarnings("unchecked")
                        public void commit(boolean onSave) {
-                               if (!password1.getText().equals("")
-                                               || !password2.getText().equals("")) {
+                               if (!password1.getText().equals("") || !password2.getText().equals("")) {
                                        if (password1.getText().equals(password2.getText())) {
                                                char[] newPassword = password1.getText().toCharArray();
                                                // userAdminWrapper.beginTransactionIfNeeded();
@@ -254,23 +242,19 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                Composite body = (Composite) section.getClient();
                body.setLayout(EclipseUiUtils.noSpaceGridLayout());
 
-               boolean isAdmin = UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN);
+               boolean isAdmin = CurrentUser.isInRole(NodeConstants.ROLE_ADMIN);
 
                // Displayed columns
                List<ColumnDefinition> columnDefs = new ArrayList<ColumnDefinition>();
                columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 0, 24));
-               columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name",
-                               150));
-               columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain Name",
-                               200));
+               columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name", 150));
+               columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain Name", 200));
                // Only show technical DN to administrators
                if (isAdmin)
-                       columnDefs.add(new ColumnDefinition(new UserNameLP(),
-                                       "Distinguished Name", 120));
+                       columnDefs.add(new ColumnDefinition(new UserNameLP(), "Distinguished Name", 120));
 
                // Create and configure the table
-               final LdifUsersTable userViewerCmp = new MyUserTableViewer(body,
-                               SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL, user);
+               final LdifUsersTable userViewerCmp = new MyUserTableViewer(body, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL, user);
 
                userViewerCmp.setColumnDefinitions(columnDefs);
                if (isAdmin)
@@ -286,8 +270,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                userViewer.addDoubleClickListener(new UserTableDefaultDClickListener());
                int operations = DND.DROP_COPY | DND.DROP_MOVE;
                Transfer[] tt = new Transfer[] { TextTransfer.getInstance() };
-               GroupDropListener dropL = new GroupDropListener(userAdminWrapper,
-                               userViewer, user);
+               GroupDropListener dropL = new GroupDropListener(userAdminWrapper, userViewer, user);
                userViewer.addDropSupport(operations, tt, dropL);
 
                SectionPart part = new SectionPart((Section) body.getParent()) {
@@ -297,8 +280,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        @Override
                        public void initialize(IManagedForm form) {
                                super.initialize(form);
-                               listener = editor.new GroupChangeListener(parent.getDisplay(),
-                                               this);
+                               listener = editor.new GroupChangeListener(parent.getDisplay(), this);
                                userAdminWrapper.addListener(listener);
                        }
 
@@ -347,8 +329,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
 
                                @Override
                                public void widgetSelected(SelectionEvent e) {
-                                       userFilter.setShowSystemRole(showSystemRoleBtn
-                                                       .getSelection());
+                                       userFilter.setShowSystemRole(showSystemRoleBtn.getSelection());
                                        refresh();
                                }
                        });
@@ -368,13 +349,11 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                }
        }
 
-       private void addRemoveAbitily(SectionPart sectionPart,
-                       TableViewer userViewer, User user) {
+       private void addRemoveAbitily(SectionPart sectionPart, TableViewer userViewer, User user) {
                Section section = sectionPart.getSection();
                ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT);
                ToolBar toolbar = toolBarManager.createControl(section);
-               final Cursor handCursor = new Cursor(section.getDisplay(),
-                               SWT.CURSOR_HAND);
+               final Cursor handCursor = new Cursor(section.getDisplay(), SWT.CURSOR_HAND);
                toolbar.setCursor(handCursor);
                toolbar.addDisposeListener(new DisposeListener() {
                        private static final long serialVersionUID = 3882131405820522925L;
@@ -386,10 +365,8 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        }
                });
 
-               String tooltip = "Remove " + UserAdminUtils.getUsername(user)
-                               + " from the below selected groups";
-               Action action = new RemoveMembershipAction(userViewer, user, tooltip,
-                               SecurityAdminImages.ICON_REMOVE_DESC);
+               String tooltip = "Remove " + UserAdminUtils.getUserLocalId(user.getName()) + " from the below selected groups";
+               Action action = new RemoveMembershipAction(userViewer, user, tooltip, SecurityAdminImages.ICON_REMOVE_DESC);
                toolBarManager.add(action);
                toolBarManager.update(true);
                section.setTextClient(toolbar);
@@ -401,8 +378,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                private final TableViewer userViewer;
                private final User user;
 
-               RemoveMembershipAction(TableViewer userViewer, User user, String name,
-                               ImageDescriptor img) {
+               RemoveMembershipAction(TableViewer userViewer, User user, String name, ImageDescriptor img) {
                        super(name, img);
                        this.userViewer = userViewer;
                        this.user = user;
@@ -428,8 +404,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                        }
                        userAdminWrapper.commitOrNotifyTransactionStateChange();
                        for (Group group : groups) {
-                               userAdminWrapper.notifyListeners(new UserAdminEvent(null,
-                                               UserAdminEvent.ROLE_CHANGED, group));
+                               userAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group));
                        }
                }
        }
@@ -444,16 +419,14 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                private final UserAdminWrapper myUserAdminWrapper;
                private final User myUser;
 
-               public GroupDropListener(UserAdminWrapper userAdminWrapper,
-                               Viewer userViewer, User user) {
+               public GroupDropListener(UserAdminWrapper userAdminWrapper, Viewer userViewer, User user) {
                        super(userViewer);
                        this.myUserAdminWrapper = userAdminWrapper;
                        this.myUser = user;
                }
 
                @Override
-               public boolean validateDrop(Object target, int operation,
-                               TransferData transferType) {
+               public boolean validateDrop(Object target, int operation, TransferData transferType) {
                        // Target is always OK in a list only view
                        // TODO check if not a string
                        boolean validDrop = true;
@@ -473,8 +446,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
                                Group group = (Group) role;
                                group.addMember(myUser);
                                userAdminWrapper.commitOrNotifyTransactionStateChange();
-                               myUserAdminWrapper.notifyListeners(new UserAdminEvent(null,
-                                               UserAdminEvent.ROLE_CHANGED, group));
+                               myUserAdminWrapper.notifyListeners(new UserAdminEvent(null, UserAdminEvent.ROLE_CHANGED, group));
                        }
                        super.drop(event);
                }
@@ -488,8 +460,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
 
        // LOCAL HELPERS
        private void refreshFormTitle(User group) {
-               getManagedForm().getForm().setText(
-                               UserAdminUtils.getProperty(group, LdapAttrs.cn.name()));
+               getManagedForm().getForm().setText(UserAdminUtils.getProperty(group, LdapAttrs.cn.name()));
        }
 
        /** Appends a section with a title */
@@ -509,8 +480,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
        }
 
        /** Creates label and multiline text. */
-       Text createLMT(FormToolkit toolkit, Composite body, String label,
-                       String value) {
+       Text createLMT(FormToolkit toolkit, Composite body, String label, String value) {
                Label lbl = toolkit.createLabel(body, label);
                lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
                Text text = toolkit.createText(body, value, SWT.BORDER | SWT.MULTI);
@@ -519,8 +489,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
        }
 
        /** Creates label and password. */
-       Text createLP(FormToolkit toolkit, Composite body, String label,
-                       String value) {
+       Text createLP(FormToolkit toolkit, Composite body, String label, String value) {
                Label lbl = toolkit.createLabel(body, label);
                lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
                Text text = toolkit.createText(body, value, SWT.BORDER | SWT.PASSWORD);
@@ -529,8 +498,7 @@ public class UserMainPage extends FormPage implements ArgeoNames {
        }
 
        /** Creates label and text. */
-       Text createLT(FormToolkit toolkit, Composite body, String label,
-                       String value) {
+       Text createLT(FormToolkit toolkit, Composite body, String label, String value) {
                Label lbl = toolkit.createLabel(body, label);
                lbl.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
                Text text = toolkit.createText(body, value, SWT.BORDER);
index 3b416738364bba4beca6d77aa151b9df99e29be6..3660cebcaba37bdfd8a0d9a057d29b8beb2cae0c 100644 (file)
@@ -19,6 +19,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
 import org.argeo.cms.ui.workbench.WorkbenchUiPlugin;
 import org.argeo.cms.ui.workbench.internal.useradmin.UiUserAdminListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.UserAdminWrapper;
@@ -28,7 +29,6 @@ import org.argeo.cms.ui.workbench.internal.useradmin.providers.MailLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserDragListener;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserNameLP;
 import org.argeo.cms.ui.workbench.internal.useradmin.providers.UserTableDefaultDClickListener;
-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;
@@ -76,7 +76,7 @@ public class UsersView extends ViewPart implements ArgeoNames {
                columnDefs.add(new ColumnDefinition(new MailLP(), "E-mail", 150));
                columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 200));
                // Only show technical DN to admin
-               if (UserAdminUtils.isUserInRole(NodeConstants.ROLE_ADMIN))
+               if (CurrentUser.isInRole(NodeConstants.ROLE_ADMIN))
                        columnDefs.add(new ColumnDefinition(new UserNameLP(),
                                        "Distinguished Name", 300));
 
index 2f47de1a17ea41d7c0acecc03953f8e63a09dfdc..5059f7c3e106701d843535e28066db615e60add2 100644 (file)
@@ -1,6 +1,6 @@
 package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.naming.LdapAttrs;
 import org.osgi.service.useradmin.User;
 
index 2afb26ae8ce5bef25c60b8f0e90ce0e97c5ff6f9..eee16fb540bdb2abefe0e3e7d647fda978184418 100644 (file)
@@ -1,6 +1,6 @@
 package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.osgi.service.useradmin.User;
 
 /** The human friendly domain name for the corresponding user. */
index 041f9183fac412402959d339f49d49cdd1242df5..3e4ff2c2fcd2ff99ab7ea97bd6aec5aa27fb3041 100644 (file)
@@ -1,6 +1,6 @@
 package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.naming.LdapAttrs;
 import org.osgi.service.useradmin.User;
 
index c5eeb473f46740ad213b549c12995d8e5cab0681..45c053635cd2317e843e149da8958ac6420977f1 100644 (file)
@@ -4,7 +4,7 @@ import javax.naming.InvalidNameException;
 import javax.naming.ldap.LdapName;
 
 import org.argeo.cms.CmsException;
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.eclipse.jface.resource.JFaceResources;
 import org.eclipse.jface.viewers.ColumnLabelProvider;
 import org.eclipse.swt.SWT;
index feb78d48cb99d813bd4955ac688bccc3d35f15fa..b89c58d592ced0bca2cb371edd3615c4c9172142 100644 (file)
@@ -2,7 +2,7 @@ package org.argeo.cms.ui.workbench.internal.useradmin.providers;
 
 import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
 
-import org.argeo.cms.util.useradmin.UserAdminUtils;
+import org.argeo.cms.util.UserAdminUtils;
 import org.argeo.naming.LdapAttrs;
 import org.argeo.node.NodeConstants;
 import org.eclipse.jface.viewers.Viewer;
diff --git a/org.argeo.cms.ui/src/org/argeo/cms/util/UserAdminUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/util/UserAdminUtils.java
new file mode 100644 (file)
index 0000000..2aa23b2
--- /dev/null
@@ -0,0 +1,148 @@
+package org.argeo.cms.util;
+
+import java.util.List;
+
+import javax.naming.InvalidNameException;
+import javax.naming.ldap.LdapName;
+import javax.naming.ldap.Rdn;
+
+import org.argeo.cms.CmsException;
+import org.argeo.cms.auth.CurrentUser;
+import org.argeo.eclipse.ui.EclipseUiUtils;
+import org.argeo.naming.LdapAttrs;
+import org.argeo.node.NodeConstants;
+import org.osgi.service.useradmin.Role;
+import org.osgi.service.useradmin.User;
+import org.osgi.service.useradmin.UserAdmin;
+
+/** Centralise common patterns to manage users with a {@link UserAdmin} */
+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);
+               LdapName userLdapName = getLdapName(userUsername);
+               LdapName selfUserName = getCurrentUserLdapName();
+               return userLdapName.equals(selfUserName);
+       }
+
+       /** Retrieves the current logged-in {@link User} */
+       public static User getCurrentUser(UserAdmin userAdmin) {
+               return (User) userAdmin.getRole(CurrentUser.getUsername());
+       }
+
+       /** Retrieves the current logged-in user {@link LdapName} */
+       public final static LdapName getCurrentUserLdapName() {
+               String name = CurrentUser.getUsername();
+               return getLdapName(name);
+       }
+
+       /** Retrieves the current logged-in user display name. */
+       public static String getCurrentUserMail(UserAdmin userAdmin) {
+               String username = CurrentUser.getUsername();
+               return getUserMail(userAdmin, username);
+       }
+
+       // OTHER USERS HELPERS
+       /**
+        * Retrieves the local id of a user or group, that is respectively the uid
+        * or cn of the passed dn with no {@link UserAdmin}
+        */
+       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()))
+                       return (String) last.getValue();
+               else
+                       throw new CmsException("Cannot retrieve user local id, 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 = userAdmin.getRole(dn);
+               String dName;
+               if (user == null)
+                       dName = getUserLocalId(dn);
+               else {
+                       dName = getProperty(user, LdapAttrs.displayName.name());
+                       if (EclipseUiUtils.isEmpty(dName))
+                               dName = getProperty(user, LdapAttrs.cn.name());
+                       if (EclipseUiUtils.isEmpty(dName))
+                               dName = getUserLocalId(dn);
+               }
+               return dName;
+       }
+
+       /**
+        * 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 = userAdmin.getRole(dn);
+               if (user == null)
+                       return null;
+               else
+                       return getProperty(user, LdapAttrs.mail.name());
+       }
+
+       // LDAP NAMES HELPERS
+       /**
+        * 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 "";
+       }
+
+       /**
+        * Simply retrieves a LDAP name from a {@link LdapAttrs.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);
+               }
+       }
+
+       /** 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))
+                       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 (!LdapAttrs.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 CmsException("Unable to get domain name for " + dn, e);
+               }
+       }
+
+       // VARIOUS HELPERS
+       public final static String buildDefaultCn(String firstName, String lastName) {
+               return (firstName.trim() + " " + lastName.trim() + " ").trim();
+       }
+}
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
deleted file mode 100644 (file)
index e157861..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-package org.argeo.cms.util.useradmin;
-
-import java.util.List;
-import java.util.Set;
-
-import javax.naming.InvalidNameException;
-import javax.naming.ldap.LdapName;
-import javax.naming.ldap.Rdn;
-
-import org.argeo.cms.CmsException;
-import org.argeo.cms.auth.CurrentUser;
-import org.argeo.eclipse.ui.EclipseUiUtils;
-import org.argeo.naming.LdapAttrs;
-import org.argeo.node.NodeConstants;
-import org.osgi.service.useradmin.Role;
-import org.osgi.service.useradmin.User;
-import org.osgi.service.useradmin.UserAdmin;
-
-/** Centralise common patterns to manage users with a {@link UserAdmin} */
-public class UserAdminUtils {
-
-       /** Checks if current user is registered */
-       public static boolean isRegistered() {
-               return !CurrentUser.isAnonymous();
-       }
-
-       /** 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);
-       }
-
-       // 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);
-               LdapName userLdapName = getLdapName(userUsername);
-               LdapName selfUserName = getCurrentUserLdapName();
-               return userLdapName.equals(selfUserName);
-       }
-
-       /** Retrieves the current logged-in {@link User} */
-       public static User getCurrentUser(UserAdmin userAdmin) {
-               return (User) userAdmin.getRole(CurrentUser.getUsername());
-       }
-
-       /** Retrieves the current logged-in user {@link LdapName} */
-       public final static LdapName getCurrentUserLdapName() {
-               String name = CurrentUser.getUsername();
-               return getLdapName(name);
-       }
-
-       /** Retrieves the current logged-in user display name. */
-       public static String getCurrentUserMail(UserAdmin userAdmin) {
-               String username = CurrentUser.getUsername();
-               return getUserMail(userAdmin, username);
-       }
-
-       // OTHER USERS HELPERS
-       /**
-        * Retrieves the local id of a user or group, that is respectively the uid
-        * or cn of the passed dn with no {@link UserAdmin}
-        */
-       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()))
-                       return (String) last.getValue();
-               else
-                       throw new CmsException("Cannot retrieve user local id, 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 = userAdmin.getRole(dn);
-               String dName;
-               if (user == null)
-                       dName = getUserLocalId(dn);
-               else {
-                       dName = getProperty(user, LdapAttrs.displayName.name());
-                       if (EclipseUiUtils.isEmpty(dName))
-                               dName = getProperty(user, LdapAttrs.cn.name());
-                       if (EclipseUiUtils.isEmpty(dName))
-                               dName = getUserLocalId(dn);
-               }
-               return dName;
-       }
-
-       /**
-        * 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 = userAdmin.getRole(dn);
-               if (user == null)
-                       return null;
-               else
-                       return getProperty(user, LdapAttrs.mail.name());
-       }
-
-       // LDAP NAMES HELPERS
-       /**
-        * 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 "";
-       }
-
-       /**
-        * Simply retrieves a LDAP name from a {@link LdapAttrs.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);
-               }
-       }
-
-       /** 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))
-                       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 (!LdapAttrs.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 CmsException("Unable to get domain name for " + dn, e);
-               }
-       }
-
-       // VARIOUS HELPERS
-       public final static String buildDefaultCn(String firstName, String lastName) {
-               return (firstName.trim() + " " + lastName.trim() + " ").trim();
-       }
-}
index 68848f7df7bc7b658efbd1b14fcb17f215f5a4ba..a23822b21fe48c7db3f43a090c059fdccfb4400a 100644 (file)
@@ -32,6 +32,7 @@ import org.osgi.service.useradmin.Authorization;
 
 /** Static utilities */
 public final class CurrentUser {
+
        /**
         * @return the authenticated username or null if not authenticated /
         *         anonymous
@@ -48,21 +49,16 @@ public final class CurrentUser {
                return isAnonymous(currentSubject());
        }
 
+       public static boolean isRegistered() {
+               return !isAnonymous();
+       }
+
        public static boolean isAnonymous(Subject subject) {
                if (subject == null)
                        return true;
                String username = getUsername(subject);
-               return username == null || username.equalsIgnoreCase(NodeConstants.ROLE_ANONYMOUS);
-       }
-
-       private static Subject currentSubject() {
-               NodeAuthenticated cmsView = getNodeAuthenticated();
-               if (cmsView != null)
-                       return cmsView.getLoginContext().getSubject();
-               Subject subject = Subject.getSubject(AccessController.getContext());
-               if (subject != null)
-                       return subject;
-               throw new CmsException("Cannot find related subject");
+               return username == null
+                               || username.equalsIgnoreCase(NodeConstants.ROLE_ANONYMOUS);
        }
 
        /**
@@ -78,7 +74,8 @@ public final class CurrentUser {
                        throw new CmsException("Subject cannot be null");
                if (subject.getPrincipals(X500Principal.class).size() != 1)
                        return NodeConstants.ROLE_ANONYMOUS;
-               Principal principal = subject.getPrincipals(X500Principal.class).iterator().next();
+               Principal principal = subject.getPrincipals(X500Principal.class)
+                               .iterator().next();
                return principal.getName();
        }
 
@@ -87,13 +84,30 @@ public final class CurrentUser {
        }
 
        private static Authorization getAuthorization(Subject subject) {
-               return subject.getPrivateCredentials(Authorization.class).iterator().next();
+               return subject.getPrivateCredentials(Authorization.class).iterator()
+                               .next();
        }
 
        public final static Set<String> roles() {
                return roles(currentSubject());
        }
 
+       private static Subject currentSubject() {
+               NodeAuthenticated cmsView = getNodeAuthenticated();
+               if (cmsView != null)
+                       return cmsView.getLoginContext().getSubject();
+               Subject subject = Subject.getSubject(AccessController.getContext());
+               if (subject != null)
+                       return subject;
+               throw new CmsException("Cannot find related subject");
+       }
+
+       /** Returns true if the current user is in the specified role */
+       public static boolean isInRole(String role) {
+               Set<String> roles = roles();
+               return roles.contains(role);
+       }
+
        public final static Set<String> roles(Subject subject) {
                Set<String> roles = new HashSet<String>();
                roles.add(getUsername(subject));