X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.ui.admin%2Fsrc%2Forg%2Fargeo%2Fsecurity%2Fui%2Fadmin%2Finternal%2Fparts%2FUsersView.java;h=edafa28511d34c993a326b5ba84b7cec6a378780;hb=f782539a48e6d4779767c5a511c25df1b9078667;hp=15bdf4a600ac431116c22d226dd1581688d372a9;hpb=cd2948994931fcb43283ffb30c1058d5860dec68;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UsersView.java b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UsersView.java index 15bdf4a60..edafa2851 100644 --- a/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UsersView.java +++ b/org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UsersView.java @@ -19,46 +19,48 @@ import java.util.ArrayList; import java.util.List; import org.argeo.ArgeoException; +import org.argeo.cms.auth.AuthConstants; +import org.argeo.cms.util.useradmin.UserAdminUtils; +import org.argeo.eclipse.ui.ColumnDefinition; import org.argeo.eclipse.ui.EclipseUiUtils; +import org.argeo.eclipse.ui.parts.LdifUsersTable; import org.argeo.jcr.ArgeoNames; +import org.argeo.osgi.useradmin.LdifName; import org.argeo.security.ui.admin.SecurityAdminPlugin; -import org.argeo.security.ui.admin.internal.ColumnDefinition; -import org.argeo.security.ui.admin.internal.CommonNameLP; -import org.argeo.security.ui.admin.internal.MailLP; -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.UserAdminWrapper; -import org.argeo.security.ui.admin.internal.UserDragListener; -import org.argeo.security.ui.admin.internal.UserNameLP; -import org.argeo.security.ui.admin.internal.UserTableDefaultDClickListener; -import org.argeo.security.ui.admin.internal.UserTableViewer; +import org.argeo.security.ui.admin.internal.providers.CommonNameLP; +import org.argeo.security.ui.admin.internal.providers.DomainNameLP; +import org.argeo.security.ui.admin.internal.providers.MailLP; +import org.argeo.security.ui.admin.internal.providers.UserDragListener; +import org.argeo.security.ui.admin.internal.providers.UserNameLP; +import org.argeo.security.ui.admin.internal.providers.UserTableDefaultDClickListener; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; 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; import org.osgi.service.useradmin.User; -import org.osgi.service.useradmin.UserAdmin; import org.osgi.service.useradmin.UserAdminEvent; import org.osgi.service.useradmin.UserAdminListener; /** List all users with filter - based on Ldif userAdmin */ public class UsersView extends ViewPart implements ArgeoNames { // private final static Log log = LogFactory.getLog(UsersView.class); + public final static String ID = SecurityAdminPlugin.PLUGIN_ID + ".usersView"; /* DEPENDENCY INJECTION */ private UserAdminWrapper userAdminWrapper; - private UserAdmin userAdmin; - // UI Objects - private UserTableViewer userTableViewerCmp; + private LdifUsersTable userTableViewerCmp; private TableViewer userViewer; private List columnDefs = new ArrayList(); @@ -72,14 +74,16 @@ public class UsersView extends ViewPart implements ArgeoNames { columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name", 150)); columnDefs.add(new ColumnDefinition(new MailLP(), "E-mail", 150)); - columnDefs.add(new ColumnDefinition(new UserNameLP(), - "Distinguished Name", 300)); + columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 200)); + // Only show technical DN to admin + if (UserAdminUtils.isUserInRole(AuthConstants.ROLE_ADMIN)) + columnDefs.add(new ColumnDefinition(new UserNameLP(), + "Distinguished Name", 300)); // Create and configure the table userTableViewerCmp = new MyUserTableViewer(parent, SWT.MULTI - | SWT.H_SCROLL | SWT.V_SCROLL, userAdmin); + | SWT.H_SCROLL | SWT.V_SCROLL); userTableViewerCmp.setLayoutData(EclipseUiUtils.fillAll()); - userTableViewerCmp.setColumnDefinitions(columnDefs); userTableViewerCmp.populate(true, false); @@ -98,27 +102,32 @@ public class UsersView extends ViewPart implements ArgeoNames { userViewer)); // 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 MyUserTableViewer extends UserTableViewer { + 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 final String[] knownProps = { UserAdminConstants.KEY_UID, - UserAdminConstants.KEY_DN, UserAdminConstants.KEY_CN, - UserAdminConstants.KEY_FIRSTNAME, - UserAdminConstants.KEY_LASTNAME, UserAdminConstants.KEY_MAIL }; + private final String[] knownProps = { LdifName.uid.name(), + LdifName.dn.name(), LdifName.cn.name(), + LdifName.givenName.name(), LdifName.sn.name(), + LdifName.mail.name() }; - public MyUserTableViewer(Composite parent, int style, - UserAdmin userAdmin) { - super(parent, style, userAdmin); + public MyUserTableViewer(Composite parent, int style) { + super(parent, style); } @Override @@ -129,7 +138,7 @@ public class UsersView extends ViewPart implements ArgeoNames { 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); @@ -138,12 +147,17 @@ public class UsersView extends ViewPart implements ArgeoNames { tmpBuilder.append("*)"); } if (tmpBuilder.length() > 1) { - builder.append("(&(objectclass=inetOrgPerson)(|"); + builder.append("(&(").append(LdifName.objectClass.name()) + .append("=").append(LdifName.inetOrgPerson.name()) + .append(")(|"); builder.append(tmpBuilder.toString()); builder.append("))"); } else - builder.append("(objectclass=inetOrgPerson)"); - roles = userAdmin.getRoles(builder.toString()); + builder.append("(").append(LdifName.objectClass.name()) + .append("=").append(LdifName.inetOrgPerson.name()) + .append(")"); + roles = userAdminWrapper.getUserAdmin().getRoles( + builder.toString()); } catch (InvalidSyntaxException e) { throw new ArgeoException("Unable to get roles with filter: " + filter, e); @@ -176,6 +190,5 @@ public class UsersView extends ViewPart implements ArgeoNames { /* DEPENDENCY INJECTION */ public void setUserAdminWrapper(UserAdminWrapper userAdminWrapper) { this.userAdminWrapper = userAdminWrapper; - this.userAdmin = userAdminWrapper.getUserAdmin(); } } \ No newline at end of file