]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.security.ui.admin/src/org/argeo/security/ui/admin/internal/providers/UserFilter.java
Improve and simplify OSGi Boot
[lgpl/argeo-commons.git] / org.argeo.security.ui.admin / src / org / argeo / security / ui / admin / internal / providers / UserFilter.java
index 43c36eb20c28a84e64dc0d4156457e3c3672b3bd..5f753d1c369c21c0f8204da06cdbafa446ab0475 100644 (file)
@@ -1,7 +1,10 @@
 package org.argeo.security.ui.admin.internal.providers;
 
+import static org.argeo.eclipse.ui.EclipseUiUtils.notEmpty;
+
+import org.argeo.cms.auth.AuthConstants;
+import org.argeo.cms.util.useradmin.UserAdminUtils;
 import org.argeo.osgi.useradmin.LdifName;
-import org.argeo.security.ui.admin.internal.UiAdminUtils;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.osgi.service.useradmin.User;
@@ -10,41 +13,48 @@ public class UserFilter extends ViewerFilter {
        private static final long serialVersionUID = 5082509381672880568L;
 
        private String searchString;
+       private boolean showSystemRole = true;
 
        private final String[] knownProps = { LdifName.dn.name(),
-                       LdifName.cn.name(), LdifName.givenname.name(), LdifName.sn.name(),
+                       LdifName.cn.name(), LdifName.givenName.name(), LdifName.sn.name(),
                        LdifName.uid.name(), LdifName.description.name(),
                        LdifName.mail.name() };
 
        public void setSearchText(String s) {
                // ensure that the value can be used for matching
-               if (notNull(s))
+               if (notEmpty(s))
                        searchString = ".*" + s.toLowerCase() + ".*";
                else
                        searchString = ".*";
        }
 
+       public void setShowSystemRole(boolean showSystemRole) {
+               this.showSystemRole = showSystemRole;
+       }
+
        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
-               if (searchString == null || searchString.length() == 0) {
-                       return true;
-               }
                User user = (User) element;
+               if (!showSystemRole
+                               && user.getName().matches(
+                                               ".*(" + AuthConstants.ROLES_BASEDN + ")"))
+                       // UserAdminUtils.getProperty(user, LdifName.dn.name())
+                       // .toLowerCase().endsWith(AuthConstants.ROLES_BASEDN))
+                       return false;
+
+               if (searchString == null || searchString.length() == 0)
+                       return true;
 
                if (user.getName().matches(searchString))
                        return true;
 
                for (String key : knownProps) {
-                       String currVal = UiAdminUtils.getProperty(user, key);
-                       if (notNull(currVal) && currVal.toLowerCase().matches(searchString))
+                       String currVal = UserAdminUtils.getProperty(user, key);
+                       if (notEmpty(currVal)
+                                       && currVal.toLowerCase().matches(searchString))
                                return true;
                }
-
                return false;
        }
 
-       private boolean notNull(String str) {
-               return !(str == null || "".equals(str.trim()));
-       }
-
 }
\ No newline at end of file