From d53071455192a97322935a911c9fbbfd92084912 Mon Sep 17 00:00:00 2001 From: Bruno Sinou Date: Tue, 25 Oct 2016 15:45:06 +0000 Subject: [PATCH] Refactor and clean userAdminUtils git-svn-id: https://svn.argeo.org/commons/trunk@9284 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../useradmin/commands/DeleteGroups.java | 19 ++-- .../useradmin/commands/DeleteUsers.java | 20 ++-- .../internal/useradmin/commands/NewUser.java | 2 +- .../useradmin/parts/GroupMainPage.java | 2 +- .../internal/useradmin/parts/GroupsView.java | 4 +- .../parts/UserBatchUpdateWizard.java | 7 +- .../internal/useradmin/parts/UserEditor.java | 2 +- .../useradmin/parts/UserMainPage.java | 104 ++++++------------ .../internal/useradmin/parts/UsersView.java | 4 +- .../useradmin/providers/CommonNameLP.java | 2 +- .../useradmin/providers/DomainNameLP.java | 2 +- .../internal/useradmin/providers/MailLP.java | 2 +- .../providers/UserAdminAbstractLP.java | 2 +- .../useradmin/providers/UserFilter.java | 2 +- .../util/{useradmin => }/UserAdminUtils.java | 14 +-- .../src/org/argeo/cms/auth/CurrentUser.java | 40 ++++--- 16 files changed, 94 insertions(+), 134 deletions(-) rename org.argeo.cms.ui/src/org/argeo/cms/util/{useradmin => }/UserAdminUtils.java (92%) diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteGroups.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteGroups.java index 59a76226e..3e8d12fc2 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteGroups.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteGroups.java @@ -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; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteUsers.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteUsers.java index cec30f02a..ee366483a 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteUsers.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/DeleteUsers.java @@ -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; } diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java index a5a41f501..e6072f178 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/commands/NewUser.java @@ -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; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java index 306f88cce..6fe6e1ab2 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupMainPage.java @@ -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; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java index 8cb284134..6ae12d9df 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/GroupsView.java @@ -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)); diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java index 19039fa0f..4fade3804 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserBatchUpdateWizard.java @@ -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 diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java index 41fadac4e..c63e120ec 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserEditor.java @@ -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; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java index 13a7196a5..f7b4ef758 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UserMainPage.java @@ -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 columnDefs = new ArrayList(); 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); diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java index 3b4167383..3660cebca 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/parts/UsersView.java @@ -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)); diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java index 2f47de1a1..5059f7c3e 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/CommonNameLP.java @@ -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; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/DomainNameLP.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/DomainNameLP.java index 2afb26ae8..eee16fb54 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/DomainNameLP.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/DomainNameLP.java @@ -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. */ diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java index 041f9183f..3e4ff2c2f 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/MailLP.java @@ -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; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserAdminAbstractLP.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserAdminAbstractLP.java index c5eeb473f..45c053635 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserAdminAbstractLP.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserAdminAbstractLP.java @@ -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; diff --git a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java index feb78d48c..b89c58d59 100644 --- a/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java +++ b/org.argeo.cms.ui.workbench/src/org/argeo/cms/ui/workbench/internal/useradmin/providers/UserFilter.java @@ -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/useradmin/UserAdminUtils.java b/org.argeo.cms.ui/src/org/argeo/cms/util/UserAdminUtils.java similarity index 92% rename from org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java rename to org.argeo.cms.ui/src/org/argeo/cms/util/UserAdminUtils.java index e157861f5..2aa23b2d0 100644 --- a/org.argeo.cms.ui/src/org/argeo/cms/util/useradmin/UserAdminUtils.java +++ b/org.argeo.cms.ui/src/org/argeo/cms/util/UserAdminUtils.java @@ -1,7 +1,6 @@ -package org.argeo.cms.util.useradmin; +package org.argeo.cms.util; import java.util.List; -import java.util.Set; import javax.naming.InvalidNameException; import javax.naming.ldap.LdapName; @@ -19,17 +18,6 @@ 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 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) { diff --git a/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java b/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java index 68848f7df..a23822b21 100644 --- a/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java +++ b/org.argeo.cms/src/org/argeo/cms/auth/CurrentUser.java @@ -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 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 roles = roles(); + return roles.contains(role); + } + public final static Set roles(Subject subject) { Set roles = new HashSet(); roles.add(getUsername(subject)); -- 2.30.2