Jelajahi Sumber

peoplesearch/hd advanced search server side updates

Jason Rivard 7 tahun lalu
induk
melakukan
12a35c1fdc

+ 26 - 0
server/src/main/java/password/pwm/http/servlet/helpdesk/HelpdeskClientDataBean.java

@@ -32,9 +32,11 @@ import password.pwm.config.option.MessageSendMethod;
 import password.pwm.config.profile.HelpdeskProfile;
 import password.pwm.config.value.data.ActionConfiguration;
 import password.pwm.config.value.data.FormConfiguration;
+import password.pwm.http.servlet.peoplesearch.PeopleSearchClientConfigBean;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -55,6 +57,10 @@ public class HelpdeskClientDataBean implements Serializable
     private Map<String, ActionInformation> actions;
     private Map<String, Collection<IdentityVerificationMethod>> verificationMethods;
     private List<FormInformation> verificationForm;
+    private int maxAdvancedSearchAttributes;
+    private List<PeopleSearchClientConfigBean.SearchAttribute> advancedSearchAttributes;
+    private boolean enableAdvancedSearch;
+
 
     @Value
     public static class ActionInformation implements Serializable
@@ -70,6 +76,15 @@ public class HelpdeskClientDataBean implements Serializable
         private String label;
     }
 
+    @Value
+    @Builder
+    public static class SearchAttribute implements Serializable
+    {
+        private String id;
+        private String attribute;
+    }
+
+
     static HelpdeskClientDataBean fromConfig(
             final HelpdeskProfile helpdeskProfile,
             final Locale locale
@@ -131,6 +146,17 @@ public class HelpdeskClientDataBean implements Serializable
             }
             builder.verificationForm( formInformations );
         }
+        {
+            final List<PeopleSearchClientConfigBean.SearchAttribute> searchAttributes = Arrays.asList(
+                    PeopleSearchClientConfigBean.SearchAttribute.builder().attribute( "Title" ).id( "title" ).build(),
+                    PeopleSearchClientConfigBean.SearchAttribute.builder().attribute( "Given Name" ).id( "givenName" ).build(),
+                    PeopleSearchClientConfigBean.SearchAttribute.builder().attribute( "First Name" ).id( "sn" ).build()
+            );
+
+                    builder.enableAdvancedSearch( true );
+                    builder.maxAdvancedSearchAttributes( 3 );
+                    builder.advancedSearchAttributes( searchAttributes );
+        }
 
 
         return builder.build();

+ 32 - 11
server/src/main/java/password/pwm/http/servlet/peoplesearch/PeopleSearchClientConfigBean.java

@@ -22,8 +22,8 @@
 
 package password.pwm.http.servlet.peoplesearch;
 
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Builder;
+import lombok.Value;
 import password.pwm.PwmApplication;
 import password.pwm.bean.SessionLabel;
 import password.pwm.bean.UserIdentity;
@@ -33,20 +33,33 @@ import password.pwm.config.value.data.FormConfiguration;
 import password.pwm.error.PwmUnrecoverableException;
 
 import java.io.Serializable;
+import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-@Getter
-@Setter
+@Value
+@Builder
 public class PeopleSearchClientConfigBean implements Serializable
 {
     private Map<String, String> searchColumns;
+    private boolean enableAdvancedSearch;
     private boolean enablePhoto;
     private boolean orgChartEnabled;
     private boolean orgChartShowChildCount;
     private int orgChartMaxParents;
+    private int maxAdvancedSearchAttributes;
+    private List<SearchAttribute> advancedSearchAttributes;
+
+    @Value
+    @Builder
+    public static class SearchAttribute implements Serializable
+    {
+        private String id;
+        private String attribute;
+    }
+
 
 
     static PeopleSearchClientConfigBean fromConfig(
@@ -67,14 +80,22 @@ public class PeopleSearchClientConfigBean implements Serializable
                     formConfiguration.getLabel( locale ) );
         }
 
-        final PeopleSearchClientConfigBean peopleSearchClientConfigBean = new PeopleSearchClientConfigBean();
-        peopleSearchClientConfigBean.setSearchColumns( searchColumns );
+        final List<SearchAttribute> searchAttributes = Arrays.asList(
+                SearchAttribute.builder().attribute( "Title" ).id( "title" ).build(),
+                SearchAttribute.builder().attribute( "Given Name" ).id( "givenName" ).build(),
+                SearchAttribute.builder().attribute( "First Name" ).id( "sn" ).build()
+        );
 
-        peopleSearchClientConfigBean.setEnablePhoto( peopleSearchConfiguration.isPhotosEnabled( userIdentity, sessionLabel ) );
-        peopleSearchClientConfigBean.setOrgChartEnabled( peopleSearchConfiguration.isOrgChartEnabled() );
-        peopleSearchClientConfigBean.setOrgChartShowChildCount( peopleSearchConfiguration.isOrgChartShowChildCount() );
-        peopleSearchClientConfigBean.setOrgChartMaxParents( peopleSearchConfiguration.getOrgChartMaxParents() );
+        return PeopleSearchClientConfigBean.builder()
+                .searchColumns( searchColumns )
+                .enablePhoto( peopleSearchConfiguration.isPhotosEnabled( userIdentity, sessionLabel ) )
+                .orgChartEnabled( peopleSearchConfiguration.isOrgChartEnabled() )
+                .orgChartShowChildCount( peopleSearchConfiguration.isOrgChartShowChildCount() )
+                .orgChartMaxParents( peopleSearchConfiguration.getOrgChartMaxParents() )
 
-        return peopleSearchClientConfigBean;
+                .enableAdvancedSearch( true )
+                .maxAdvancedSearchAttributes( 3 )
+                .advancedSearchAttributes( searchAttributes )
+                .build();
     }
 }