From 64c979b8e546d698f292f57ecbc4d8bd4fa98720 Mon Sep 17 00:00:00 2001
From: uhensler <urs.hensler@frentix.com>
Date: Thu, 10 Oct 2019 09:03:07 +0200
Subject: [PATCH] OO-4301: Existing OpenOlat user should be merged with
 Shibboleth user by username

---
 src/main/java/org/olat/login/auth/OLATAuthManager.java      | 2 +-
 .../login/validation/UsernameValidationRulesFactory.java    | 6 ++++--
 .../org/olat/shibboleth/ShibbolethRegistrationForm.java     | 6 +++---
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/main/java/org/olat/login/auth/OLATAuthManager.java b/src/main/java/org/olat/login/auth/OLATAuthManager.java
index 1b019807cb2..c9cb3eca64d 100644
--- a/src/main/java/org/olat/login/auth/OLATAuthManager.java
+++ b/src/main/java/org/olat/login/auth/OLATAuthManager.java
@@ -205,7 +205,7 @@ public class OLATAuthManager implements AuthenticationSPI {
 	}
 	
 	public SyntaxValidator createUsernameSytaxValidator() {
-		return new SyntaxValidator(usernameRulesFactory.createRules(), false);
+		return new SyntaxValidator(usernameRulesFactory.createRules(true), false);
 	}
 	
 	
diff --git a/src/main/java/org/olat/login/validation/UsernameValidationRulesFactory.java b/src/main/java/org/olat/login/validation/UsernameValidationRulesFactory.java
index 78727db8a95..4710043d036 100644
--- a/src/main/java/org/olat/login/validation/UsernameValidationRulesFactory.java
+++ b/src/main/java/org/olat/login/validation/UsernameValidationRulesFactory.java
@@ -39,11 +39,13 @@ public class UsernameValidationRulesFactory {
 	@Autowired
 	private LoginModule loginModule;
 	
-	public ValidationRulesProvider createRules() {
+	public ValidationRulesProvider createRules(boolean checkUsernameExists) {
 		ValidationRulesProviderBuilder providerBuilder = new ValidationRulesProviderBuilder();
 		providerBuilder.add(createUsernameSyntaxRule());
 		providerBuilder.add(createBlackListRule());
-		providerBuilder.add(createUsernameExistsRule());
+		if (checkUsernameExists) {
+			providerBuilder.add(createUsernameExistsRule());
+		}
 		return providerBuilder.create();
 	}
 
diff --git a/src/main/java/org/olat/shibboleth/ShibbolethRegistrationForm.java b/src/main/java/org/olat/shibboleth/ShibbolethRegistrationForm.java
index 626f6138bfd..43e44caebbf 100644
--- a/src/main/java/org/olat/shibboleth/ShibbolethRegistrationForm.java
+++ b/src/main/java/org/olat/shibboleth/ShibbolethRegistrationForm.java
@@ -35,8 +35,8 @@ import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
-import org.olat.login.auth.OLATAuthManager;
 import org.olat.login.validation.SyntaxValidator;
+import org.olat.login.validation.UsernameValidationRulesFactory;
 import org.olat.login.validation.ValidationResult;
 import org.olat.user.ChangePasswordForm;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -58,13 +58,13 @@ public class ShibbolethRegistrationForm extends FormBasicController {
 	private final SyntaxValidator usernameSyntaxValidator;
 
 	@Autowired
-	private OLATAuthManager olatAuthManager;
+	private UsernameValidationRulesFactory usernameRulesFactory;
 
 	public ShibbolethRegistrationForm(UserRequest ureq, WindowControl wControl, String proposedUsername) {
 		super(ureq, wControl);
 		setTranslator(Util.createPackageTranslator(ChangePasswordForm.class, ureq.getLocale(), getTranslator()));
 		this.proposedUsername = proposedUsername;
-		this.usernameSyntaxValidator = olatAuthManager.createUsernameSytaxValidator();
+		this.usernameSyntaxValidator = new SyntaxValidator(usernameRulesFactory.createRules(false), false);
 		initForm(ureq);
 	}
 	
-- 
GitLab