X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2Fparts%2FGroupsView.java;h=620e1d37886eb1c661c8bfe17241f8ff031fa336;hb=f2d02f1aa5dc31c75049be1ba2b79a49f3d856af;hp=450a4a9598103fd63c4c1a928ce53a8dbffe78b0;hpb=935a76bdd458e4fb8502783946cb910324388da8;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupsView.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupsView.java index 450a4a959..620e1d378 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupsView.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/GroupsView.java @@ -21,14 +21,15 @@ import java.util.List; 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.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.SecurityAdminPlugin; -import org.argeo.security.ui.admin.internal.UiAdminUtils; -import org.argeo.security.ui.admin.internal.UserAdminConstants; +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; @@ -46,6 +47,7 @@ import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.part.ViewPart; import org.osgi.framework.InvalidSyntaxException; import org.osgi.service.useradmin.Role; @@ -72,20 +74,29 @@ public class GroupsView extends ViewPart implements ArgeoNames { @Override public void createPartControl(Composite parent) { parent.setLayout(EclipseUiUtils.noSpaceGridLayout()); + + boolean isAdmin = UserAdminUtils.isUserInRole(AuthConstants.ROLE_ADMIN); + // Define the displayed columns columnDefs.add(new ColumnDefinition(new RoleIconLP(), "", 26)); columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name", 150)); - columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 120)); - columnDefs.add(new ColumnDefinition(new UserNameLP(), - "Distinguished Name", 300)); + columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 200)); + // Only show technical DN to admin + if (isAdmin) + columnDefs.add(new ColumnDefinition(new UserNameLP(), + "Distinguished Name", 300)); // Create and configure the table groupTableViewerCmp = new MyUserTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); groupTableViewerCmp.setColumnDefinitions(columnDefs); - groupTableViewerCmp.populateWithStaticFilters(false, false); + if (isAdmin) + groupTableViewerCmp.populateWithStaticFilters(false, false); + else + groupTableViewerCmp.populate(true, false); + groupTableViewerCmp.setLayoutData(EclipseUiUtils.fillAll()); // Links @@ -102,21 +113,38 @@ public class GroupsView extends ViewPart implements ArgeoNames { userViewer.addDragSupport(operations, tt, new UserDragListener( userViewer)); + // // Register a useradmin listener + // listener = new UserAdminListener() { + // @Override + // public void roleChanged(UserAdminEvent event) { + // if (userViewer != null && !userViewer.getTable().isDisposed()) + // refresh(); + // } + // }; + // userAdminWrapper.addListener(listener); + // } + // Register a useradmin listener - listener = new UserAdminListener() { - @Override - public void roleChanged(UserAdminEvent event) { - if (userViewer != null && !userViewer.getTable().isDisposed()) - refresh(); - } - }; + listener = new MyUiUAListener(parent.getDisplay()); userAdminWrapper.addListener(listener); } + private class MyUiUAListener extends UiUserAdminListener { + public MyUiUAListener(Display display) { + super(display); + } + + @Override + public void roleChangedToUiThread(UserAdminEvent event) { + if (userViewer != null && !userViewer.getTable().isDisposed()) + refresh(); + } + } + private class MyUserTableViewer extends LdifUsersTable { private static final long serialVersionUID = 8467999509931900367L; - private Button showSystemRoleBtn; + private boolean showSystemRoles = false; private final String[] knownProps = { LdifName.uid.name(), LdifName.cn.name(), LdifName.dn.name() }; @@ -127,13 +155,15 @@ public class GroupsView extends ViewPart implements ArgeoNames { protected void populateStaticFilters(Composite staticFilterCmp) { staticFilterCmp.setLayout(new GridLayout()); - showSystemRoleBtn = new Button(staticFilterCmp, SWT.CHECK); + final Button showSystemRoleBtn = new Button(staticFilterCmp, + SWT.CHECK); showSystemRoleBtn.setText("Show system roles"); showSystemRoleBtn.addSelectionListener(new SelectionAdapter() { private static final long serialVersionUID = -7033424592697691676L; @Override public void widgetSelected(SelectionEvent e) { + showSystemRoles = showSystemRoleBtn.getSelection(); refresh(); } @@ -146,7 +176,7 @@ public class GroupsView extends ViewPart implements ArgeoNames { try { StringBuilder builder = new StringBuilder(); StringBuilder tmpBuilder = new StringBuilder(); - if (UiAdminUtils.notNull(filter)) + if (EclipseUiUtils.notEmpty(filter)) for (String prop : knownProps) { tmpBuilder.append("("); tmpBuilder.append(prop); @@ -158,23 +188,23 @@ public class GroupsView extends ViewPart implements ArgeoNames { builder.append("(&(").append(LdifName.objectClass.name()) .append("=").append(LdifName.groupOfNames.name()) .append(")"); - if (!showSystemRoleBtn.getSelection()) + if (!showSystemRoles) builder.append("(!(").append(LdifName.dn.name()) .append("=*") - .append(UserAdminConstants.SYSTEM_ROLE_BASE_DN) + .append(AuthConstants.ROLES_BASEDN) .append("))"); builder.append("(|"); builder.append(tmpBuilder.toString()); builder.append("))"); } else { - if (!showSystemRoleBtn.getSelection()) + if (!showSystemRoles) builder.append("(&(") .append(LdifName.objectClass.name()) .append("=") .append(LdifName.groupOfNames.name()) .append(")(!(").append(LdifName.dn.name()) .append("=*") - .append(UserAdminConstants.SYSTEM_ROLE_BASE_DN) + .append(AuthConstants.ROLES_BASEDN) .append(")))"); else builder.append("(").append(LdifName.objectClass.name())