]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-20475 Ignore allowUsersToSignUp parameter on managed instance
authorAntoine Vigneau <antoine.vigneau@sonarsource.com>
Tue, 19 Sep 2023 10:18:47 +0000 (12:18 +0200)
committersonartech <sonartech@sonarsource.com>
Tue, 19 Sep 2023 20:02:47 +0000 (20:02 +0000)
server/sonar-webserver-auth/src/it/java/org/sonar/server/authentication/UserRegistrarImplIT.java
server/sonar-webserver-auth/src/main/java/org/sonar/server/authentication/UserRegistrarImpl.java

index 9024f6c24f6cfe727671dc305c8b4c99e6fda682..5a35dcfbdec8075740da994e08ea98613550a291 100644 (file)
@@ -251,10 +251,19 @@ public class UserRegistrarImplIT {
   }
 
   @Test
-  public void register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser() {
+  public void register_whenNewManagedUserAndManagedInstanceAndSignupTrue_shouldCreateAndReturnUser() {
+    register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser(true);
+  }
+
+  @Test
+  public void register_whenNewManagedUserAndManagedInstanceAndSignupFalse_shouldCreateAndReturnUser() {
+    register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser(false);
+  }
+
+  private void register_whenNewManagedUserAndManagedInstance_shouldCreateAndReturnUser(boolean signup) {
     when(managedInstanceService.isInstanceExternallyManaged()).thenReturn(true);
 
-    TestIdentityProvider identityProvider = composeIdentityProvider("saml", "Okta", true, true);
+    TestIdentityProvider identityProvider = composeIdentityProvider("saml", "Okta", true, signup);
     Source source = realm(AuthenticationEvent.Method.FORM, identityProvider.getName());
     UserRegistration registration = composeUserRegistration(USER_IDENTITY, identityProvider, source, true);
 
index 6352fbb86fb1cd36443e1c30b19cba65a1e6af9a..7f9b4abeac97d6203d8b47fe6ef596e61da6c3ef 100644 (file)
@@ -86,7 +86,7 @@ public class UserRegistrarImpl implements UserRegistrar {
       if (!userDto.isActive()) {
         return registerNewUser(dbSession, userDto, registration);
       }
-      return registerExistingUser(dbSession, userDto, registration);
+      return updateExistingUser(dbSession, userDto, registration);
     }
   }
 
@@ -184,7 +184,7 @@ public class UserRegistrarImpl implements UserRegistrar {
     }
   }
 
-  private UserDto registerExistingUser(DbSession dbSession, UserDto userDto, UserRegistration authenticatorParameters) {
+  private UserDto updateExistingUser(DbSession dbSession, UserDto userDto, UserRegistration authenticatorParameters) {
     UpdateUser update = new UpdateUser()
       .setEmail(authenticatorParameters.getUserIdentity().getEmail())
       .setName(authenticatorParameters.getUserIdentity().getName())
@@ -268,9 +268,9 @@ public class UserRegistrarImpl implements UserRegistrar {
     return Optional.of(defaultGroupFinder.findDefaultGroup(dbSession));
   }
 
-  private static NewUser createNewUser(UserRegistration authenticatorParameters) {
+  private NewUser createNewUser(UserRegistration authenticatorParameters) {
     String identityProviderKey = authenticatorParameters.getProvider().getKey();
-    if (!authenticatorParameters.getProvider().allowsUsersToSignUp()) {
+    if (!managedInstanceService.isInstanceExternallyManaged() && !authenticatorParameters.getProvider().allowsUsersToSignUp()) {
       throw AuthenticationException.newBuilder()
         .setSource(authenticatorParameters.getSource())
         .setLogin(authenticatorParameters.getUserIdentity().getProviderLogin())