You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by an...@apache.org on 2020/10/30 13:11:53 UTC

[syncope] branch 2_1_X updated: [SYNCOPE-1597] Parametrized console to enable non role-based customization (#224)

This is an automated email from the ASF dual-hosted git repository.

andreapatricelli pushed a commit to branch 2_1_X
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/2_1_X by this push:
     new f8d0fee  [SYNCOPE-1597] Parametrized console to enable non role-based customization (#224)
f8d0fee is described below

commit f8d0feec359fb75dca31a0ad88ff521c0e61c3ef
Author: Andrea Patricelli <an...@apache.org>
AuthorDate: Fri Oct 30 14:11:23 2020 +0100

    [SYNCOPE-1597] Parametrized console to enable non role-based customization (#224)
    
    * [SYNCOPE-1597] Parametrized layout in console to enable non role-based customization
---
 .../apache/syncope/client/console/SyncopeConsoleApplication.java | 9 +++++++++
 .../java/org/apache/syncope/client/console/layout/AnyLayout.java | 8 ++++++--
 client/console/src/main/resources/console.properties             | 2 ++
 docker/console/src/main/resources/console.properties.template    | 2 ++
 fit/console-reference/src/main/resources/console.properties      | 2 ++
 fit/core-reference/src/test/resources/console.properties         | 2 ++
 6 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
index 214298a..b0e457d 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/SyncopeConsoleApplication.java
@@ -44,6 +44,7 @@ import org.apache.syncope.client.console.pages.BasePage;
 import org.apache.syncope.client.console.pages.Dashboard;
 import org.apache.syncope.client.console.pages.MustChangePassword;
 import org.apache.syncope.client.console.pages.Login;
+import org.apache.syncope.client.console.panels.AnyPanel;
 import org.apache.syncope.client.console.themes.AdminLTE;
 import org.apache.syncope.client.lib.AnonymousAuthenticationHandler;
 import org.apache.syncope.client.lib.SyncopeClientFactoryBean;
@@ -116,6 +117,8 @@ public class SyncopeConsoleApplication extends AuthenticatedWebApplication {
     private List<String> domains;
 
     private Map<String, Class<? extends BasePage>> pageClasses;
+    
+    private String defaultAnyLayoutClass;
 
     @SuppressWarnings("unchecked")
     protected void populatePageClasses(final Properties props) {
@@ -187,6 +190,8 @@ public class SyncopeConsoleApplication extends AuthenticatedWebApplication {
         populatePageClasses(props);
         pageClasses = Collections.unmodifiableMap(pageClasses);
 
+        defaultAnyLayoutClass = props.getProperty("default.any.panel.class", AnyPanel.class.getName());
+        
         // Application settings
         IBootstrapSettings settings = new BootstrapSettings();
 
@@ -325,6 +330,10 @@ public class SyncopeConsoleApplication extends AuthenticatedWebApplication {
         return queueCapacity;
     }
 
+    public String getDefaultAnyLayoutClass() {
+        return defaultAnyLayoutClass;
+    }
+
     public SyncopeClientFactoryBean newClientFactory() {
         return new SyncopeClientFactoryBean().
                 setAddress(scheme + "://" + host + ":" + port + StringUtils.prependIfMissing(rootPath, "/")).
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/layout/AnyLayout.java b/client/console/src/main/java/org/apache/syncope/client/console/layout/AnyLayout.java
index b15138c..e742f26 100644
--- a/client/console/src/main/java/org/apache/syncope/client/console/layout/AnyLayout.java
+++ b/client/console/src/main/java/org/apache/syncope/client/console/layout/AnyLayout.java
@@ -24,13 +24,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import java.io.Serializable;
 import java.util.HashMap;
 import java.util.Map;
-import org.apache.syncope.client.console.panels.AnyPanel;
+import org.apache.syncope.client.console.SyncopeConsoleApplication;
 
 public class AnyLayout implements Serializable {
 
     private static final long serialVersionUID = 488645029994410970L;
 
-    private String anyPanelClass = AnyPanel.class.getName();
+    private String anyPanelClass;
 
     @JsonProperty("USER")
     private UserFormLayoutInfo user;
@@ -40,6 +40,10 @@ public class AnyLayout implements Serializable {
 
     private final Map<String, AnyObjectFormLayoutInfo> anyObjects = new HashMap<>();
 
+    public AnyLayout() {
+        this.anyPanelClass = SyncopeConsoleApplication.get().getDefaultAnyLayoutClass();
+    }
+
     public String getAnyPanelClass() {
         return anyPanelClass;
     }
diff --git a/client/console/src/main/resources/console.properties b/client/console/src/main/resources/console.properties
index 8353183..5abb761 100644
--- a/client/console/src/main/resources/console.properties
+++ b/client/console/src/main/resources/console.properties
@@ -44,6 +44,8 @@ page.policies=org.apache.syncope.client.console.pages.Policies
 page.notifications=org.apache.syncope.client.console.pages.Notifications
 page.parameters=org.apache.syncope.client.console.pages.Parameters
 
+default.any.panel.class=org.apache.syncope.client.console.panels.AnyPanel
+
 topology.corePoolSize=10
 topology.maxPoolSize=20
 topology.queueCapacity=50
diff --git a/docker/console/src/main/resources/console.properties.template b/docker/console/src/main/resources/console.properties.template
index 0c1b820..b5bddce 100644
--- a/docker/console/src/main/resources/console.properties.template
+++ b/docker/console/src/main/resources/console.properties.template
@@ -44,6 +44,8 @@ page.policies=org.apache.syncope.client.console.pages.Policies
 page.notifications=org.apache.syncope.client.console.pages.Notifications
 page.parameters=org.apache.syncope.client.console.pages.Parameters
 
+default.any.panel.class=org.apache.syncope.client.console.panels.AnyPanel
+
 topology.corePoolSize=10
 topology.maxPoolSize=20
 topology.queueCapacity=50
diff --git a/fit/console-reference/src/main/resources/console.properties b/fit/console-reference/src/main/resources/console.properties
index d4e8b3f..9c13d73 100644
--- a/fit/console-reference/src/main/resources/console.properties
+++ b/fit/console-reference/src/main/resources/console.properties
@@ -44,6 +44,8 @@ page.policies=org.apache.syncope.client.console.pages.Policies
 page.notifications=org.apache.syncope.client.console.pages.Notifications
 page.parameters=org.apache.syncope.client.console.pages.Parameters
 
+default.any.panel.class=org.apache.syncope.client.console.panels.AnyPanel
+
 topology.corePoolSize=50
 topology.maxPoolSize=100
 topology.queueCapacity=10
diff --git a/fit/core-reference/src/test/resources/console.properties b/fit/core-reference/src/test/resources/console.properties
index 39eaa8c..a0bbc2f 100644
--- a/fit/core-reference/src/test/resources/console.properties
+++ b/fit/core-reference/src/test/resources/console.properties
@@ -44,6 +44,8 @@ page.policies=org.apache.syncope.client.console.pages.Policies
 page.notifications=org.apache.syncope.client.console.pages.Notifications
 page.parameters=org.apache.syncope.client.console.pages.Parameters
 
+default.any.panel.class=org.apache.syncope.client.console.panels.AnyPanel
+
 topology.corePoolSize=50
 topology.maxPoolSize=100
 topology.queueCapacity=10