From 5ab75c9b7a8404071c39bab63259a9d4d95b88b1 Mon Sep 17 00:00:00 2001
From: pkazimierowski <pkazimierowski@man.poznan.pl>
Date: Wed, 9 Apr 2025 09:01:21 +0200
Subject: [PATCH 1/2] extended conditions for saml token
---
.../service/impl/OidcUserServiceImpl.java | 26 +++++++------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
index a9eebe460..6b6b264f5 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
@@ -51,14 +51,15 @@ public class OidcUserServiceImpl implements OidcUserService {
.existsBySamlToken(oidcUserSub);
boolean existUserByUsernameAsSamlToken = userService
.existsBySamlToken(oidcUserPreferredUsername);
- boolean existUserByEmail = userService
- .existsByEmail(oidcUserEmail);
+ boolean existsUserBySamlTokenAsEmail = userService
+ .existsBySamlToken(oidcUserEmail);
if (existUserBySamlToken) {
return userService
.findBySamlToken(oidcUserSub)
.orElseThrow();
- } else if (existUserByUsernameAsSamlToken) {
+ } else if (existUserByUsernameAsSamlToken
+ || existsUserBySamlTokenAsEmail) {
User user = userService
.findBySamlToken(oidcUserPreferredUsername)
.orElseThrow();
@@ -71,7 +72,7 @@ public class OidcUserServiceImpl implements OidcUserService {
+ oidcUserPreferredUsername
+ " does not match internal user ");
}
- } else {
+ } else {
return registerNewUser(oidcUser);
}
}
@@ -116,20 +117,13 @@ public class OidcUserServiceImpl implements OidcUserService {
@Override
public boolean externalUserRequiredLinking(OidcUser oidcUser) {
- String oidcUserSub = oidcUser.getAttribute("sub");
String oidcUserEmail = oidcUser.getAttribute("email");
- String oidcUserPreferredUsername = oidcUser.getAttribute("preferred_username");
-
- boolean existUserBySamlToken = userService
- .existsBySamlToken(oidcUserSub);
- boolean existUserByUsernameAsSamlToken = userService
- .existsBySamlToken(oidcUserPreferredUsername);
- boolean existUserByEmail = userService
- .existsByEmail(oidcUserEmail);
- if(existUserBySamlToken || existUserByUsernameAsSamlToken) {
- return false;
- }else return existUserByEmail;
+ if(userService.existsByEmail(oidcUserEmail)){
+ User user = userService.findByEmail(oidcUserEmail);
+ return user.getSamlToken().isEmpty();
+ }
+ return false;
}
@Override
--
GitLab
From e8bb7c9aab720cdb5aa93c7fa32914349473d4cf Mon Sep 17 00:00:00 2001
From: pkazimierowski <pkazimierowski@man.poznan.pl>
Date: Wed, 9 Apr 2025 09:13:31 +0200
Subject: [PATCH 2/2] fixed condition
---
.../geant/nmaas/portal/service/impl/OidcUserServiceImpl.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
index 6b6b264f5..3303cbfa6 100644
--- a/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
+++ b/src/main/java/net/geant/nmaas/portal/service/impl/OidcUserServiceImpl.java
@@ -121,7 +121,7 @@ public class OidcUserServiceImpl implements OidcUserService {
if(userService.existsByEmail(oidcUserEmail)){
User user = userService.findByEmail(oidcUserEmail);
- return user.getSamlToken().isEmpty();
+ return user.getSamlToken() == null || user.getSamlToken().isEmpty();
}
return false;
}
--
GitLab