]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/parts/UsersView.java
Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / parts / UsersView.java
index 837d6a17e4856facbd7f4d2de0f9eccff64bd20a..a397432a84dce719802b8ca68ea571742e378869 100644 (file)
@@ -18,15 +18,16 @@ package org.argeo.security.ui.admin.internal.parts;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.argeo.ArgeoException;
+import org.argeo.cms.CmsException;
+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.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.providers.CommonNameLP;
 import org.argeo.security.ui.admin.internal.providers.DomainNameLP;
@@ -40,6 +41,7 @@ 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;
@@ -50,7 +52,7 @@ 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";
 
@@ -71,16 +73,17 @@ public class UsersView extends ViewPart implements ArgeoNames {
                // Define the displayed columns
                columnDefs.add(new ColumnDefinition(new CommonNameLP(), "Common Name",
                                150));
-               columnDefs.add(new ColumnDefinition(new DomainNameLP(), "Domain", 120));
                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);
                userTableViewerCmp.setLayoutData(EclipseUiUtils.fillAll());
-
                userTableViewerCmp.setColumnDefinitions(columnDefs);
                userTableViewerCmp.populate(true, false);
 
@@ -99,23 +102,29 @@ 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 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 = { LdifName.uid.name(),
                                LdifName.dn.name(), LdifName.cn.name(),
-                               UserAdminConstants.KEY_FIRSTNAME,
-                               UserAdminConstants.KEY_LASTNAME, LdifName.mail.name() };
+                               LdifName.givenName.name(), LdifName.sn.name(),
+                               LdifName.mail.name() };
 
                public MyUserTableViewer(Composite parent, int style) {
                        super(parent, style);
@@ -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,15 +147,19 @@ 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)");
+                                       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: "
+                               throw new CmsException("Unable to get roles with filter: "
                                                + filter, e);
                        }
                        List<User> users = new ArrayList<User>();