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

ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git


The following commit(s) were added to refs/heads/master by this push:
     new ffbaf3c802 Fixing SAML 2.0 SP4UI logout
ffbaf3c802 is described below

commit ffbaf3c802df9675326b4eb59aef9cab72e56166
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Mon May 29 15:58:26 2023 +0200

    Fixing SAML 2.0 SP4UI logout
---
 .../apache/syncope/core/logic/oidc/OIDCUserManager.java   | 15 ++++++++-------
 .../ui/commons/resources/saml2sp4ui/LogoutResource.java   |  2 +-
 .../resources/saml2sp4ui/ConsoleLogoutResource.java       |  4 ++--
 .../resources/saml2sp4ui/EnduserLogoutResource.java       |  4 ++--
 .../syncope/core/logic/saml2/SAML2SP4UIUserManager.java   | 15 ++++++++-------
 5 files changed, 21 insertions(+), 19 deletions(-)

diff --git 
a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
 
b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
index 36c5f6b0ec..2f9040c4e6 100644
--- 
a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
+++ 
b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCUserManager.java
@@ -30,7 +30,6 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.oidc.OIDCLoginResponse;
 import org.apache.syncope.common.lib.request.UserCR;
@@ -201,14 +200,11 @@ public class OIDCUserManager {
             templateUtils.apply(userCR, op.getUserTemplate().get());
         }
 
-        List<OIDCC4UIProviderActions> actions = getActions(op);
-        for (OIDCC4UIProviderActions action : actions) {
-            userCR = action.beforeCreate(userCR, responseTO);
-        }
-
         UserTO userTO = new UserTO();
         fill(op, responseTO, userTO);
-        EntityTOUtils.toAnyCR(userTO, userCR);
+
+        
Optional.ofNullable(userTO.getUsername()).ifPresent(userCR::setUsername);
+        userCR.getPlainAttrs().addAll(userTO.getPlainAttrs());
 
         if (userCR.getRealm() == null) {
             userCR.setRealm(SyncopeConstants.ROOT_REALM);
@@ -217,6 +213,11 @@ public class OIDCUserManager {
             userCR.setUsername(defaultUsername);
         }
 
+        List<OIDCC4UIProviderActions> actions = getActions(op);
+        for (OIDCC4UIProviderActions action : actions) {
+            userCR = action.beforeCreate(userCR, responseTO);
+        }
+
         Pair<String, List<PropagationStatus>> created =
                 provisioningManager.create(userCR, false, 
userCR.getUsername(), OIDC_CLIENT_CONTEXT);
         userTO = binder.getUserTO(created.getKey());
diff --git 
a/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java
 
b/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java
index 5e4b1a2c3b..886776eea6 100644
--- 
a/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java
+++ 
b/ext/saml2sp4ui/client-common-ui/src/main/java/org/apache/syncope/client/ui/commons/resources/saml2sp4ui/LogoutResource.java
@@ -39,7 +39,7 @@ public abstract class LogoutResource extends 
AbstractSAML2SP4UIResource {
 
     protected abstract Class<? extends WebPage> getLogoutPageClass();
 
-    private ResourceResponse doLogout(final SAML2Response saml2Response) {
+    protected ResourceResponse doLogout(final SAML2Response saml2Response) {
         SAML2SP4UIService service = 
BaseSession.class.cast(Session.get()).getAnonymousService(SAML2SP4UIService.class);
         service.validateLogoutResponse(saml2Response);
 
diff --git 
a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java
 
b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java
index ad5894df3e..18231abb3f 100644
--- 
a/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java
+++ 
b/ext/saml2sp4ui/client-console/src/main/java/org/apache/syncope/client/console/resources/saml2sp4ui/ConsoleLogoutResource.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.client.console.resources.saml2sp4ui;
 
-import org.apache.syncope.client.console.pages.SAML2SPBeforeLogout;
+import org.apache.syncope.client.console.pages.SAML2SPLogout;
 import org.apache.syncope.client.ui.commons.SAML2SP4UIConstants;
 import org.apache.syncope.client.ui.commons.annotations.Resource;
 import 
org.apache.syncope.client.ui.commons.resources.saml2sp4ui.LogoutResource;
@@ -33,6 +33,6 @@ public class ConsoleLogoutResource extends LogoutResource {
 
     @Override
     protected Class<? extends WebPage> getLogoutPageClass() {
-        return SAML2SPBeforeLogout.class;
+        return SAML2SPLogout.class;
     }
 }
diff --git 
a/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java
 
b/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java
index 30c8868f9a..e75039be72 100644
--- 
a/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java
+++ 
b/ext/saml2sp4ui/client-enduser/src/main/java/org/apache/syncope/client/enduser/resources/saml2sp4ui/EnduserLogoutResource.java
@@ -18,7 +18,7 @@
  */
 package org.apache.syncope.client.enduser.resources.saml2sp4ui;
 
-import org.apache.syncope.client.enduser.pages.SAML2SPBeforeLogout;
+import org.apache.syncope.client.enduser.pages.SAML2SPLogout;
 import org.apache.syncope.client.ui.commons.SAML2SP4UIConstants;
 import org.apache.syncope.client.ui.commons.annotations.Resource;
 import 
org.apache.syncope.client.ui.commons.resources.saml2sp4ui.LogoutResource;
@@ -33,6 +33,6 @@ public class EnduserLogoutResource extends LogoutResource {
 
     @Override
     protected Class<? extends WebPage> getLogoutPageClass() {
-        return SAML2SPBeforeLogout.class;
+        return SAML2SPLogout.class;
     }
 }
diff --git 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java
 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java
index c7ab14d98a..21bacfbe21 100644
--- 
a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java
+++ 
b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/SAML2SP4UIUserManager.java
@@ -31,7 +31,6 @@ import org.apache.commons.lang3.SerializationUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.syncope.common.lib.AnyOperations;
 import org.apache.syncope.common.lib.Attr;
-import org.apache.syncope.common.lib.EntityTOUtils;
 import org.apache.syncope.common.lib.SyncopeConstants;
 import org.apache.syncope.common.lib.request.UserCR;
 import org.apache.syncope.common.lib.request.UserUR;
@@ -217,14 +216,11 @@ public class SAML2SP4UIUserManager {
             templateUtils.apply(userCR, idp.getUserTemplate().get());
         }
 
-        List<SAML2SP4UIIdPActions> actions = getActions(idp);
-        for (SAML2SP4UIIdPActions action : actions) {
-            userCR = action.beforeCreate(userCR, loginResponse);
-        }
-
         UserTO userTO = new UserTO();
         fill(idp.getKey(), loginResponse, userTO);
-        EntityTOUtils.toAnyCR(userTO, userCR);
+
+        
Optional.ofNullable(userTO.getUsername()).ifPresent(userCR::setUsername);
+        userCR.getPlainAttrs().addAll(userTO.getPlainAttrs());
 
         if (userCR.getRealm() == null) {
             userCR.setRealm(SyncopeConstants.ROOT_REALM);
@@ -233,6 +229,11 @@ public class SAML2SP4UIUserManager {
             userCR.setUsername(nameID);
         }
 
+        List<SAML2SP4UIIdPActions> actions = getActions(idp);
+        for (SAML2SP4UIIdPActions action : actions) {
+            userCR = action.beforeCreate(userCR, loginResponse);
+        }
+
         Pair<String, List<PropagationStatus>> created =
                 provisioningManager.create(userCR, false, 
userCR.getUsername(), SAML2SP_CONTEXT);
         userTO = binder.getUserTO(created.getKey());

Reply via email to