diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/OrganizationConfigurationCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/OrganizationConfigurationCE.java index 153447260a..415e5035dd 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/OrganizationConfigurationCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/domains/ce/OrganizationConfigurationCE.java @@ -81,7 +81,7 @@ public class OrganizationConfigurationCE implements Serializable { googleMapsKey = ObjectUtils.defaultIfNull(organizationConfiguration.getGoogleMapsKey(), googleMapsKey); isFormLoginEnabled = - ObjectUtils.defaultIfNull(organizationConfiguration.getIsFormLoginEnabled(), isFormLoginEnabled); + getComputedValue(true, organizationConfiguration.getIsFormLoginEnabled(), isFormLoginEnabled); isSignupDisabled = ObjectUtils.defaultIfNull(organizationConfiguration.getIsSignupDisabled(), isSignupDisabled); instanceName = ObjectUtils.defaultIfNull(organizationConfiguration.getInstanceName(), instanceName); emailVerificationEnabled = ObjectUtils.defaultIfNull( @@ -93,6 +93,13 @@ public class OrganizationConfigurationCE implements Serializable { isAtomicPushAllowed = organizationConfiguration.getIsAtomicPushAllowed(); } + protected static T getComputedValue(T defaultValue, T updatedValue, T currentValue) { + if (currentValue == null && updatedValue == null) { + return defaultValue; + } + return ObjectUtils.defaultIfNull(updatedValue, currentValue); + } + public static class Fields { public Fields() { // Public constructor for Fields class diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/OrganizationServiceCETest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/OrganizationServiceCETest.java index e6434a9b58..5df36a2270 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/OrganizationServiceCETest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/services/ce/OrganizationServiceCETest.java @@ -172,6 +172,49 @@ class OrganizationServiceCETest { .verify(); } + @Test + @WithUserDetails("api_user") + void updateOrganizationConfiguration_updateFormLoginEnabled_success() { + + // Ensure that default value for form login is enabled + Mono organizationMono = organizationService.getOrganizationConfiguration(); + StepVerifier.create(organizationMono) + .assertNext(organization -> { + assertThat(organization.getOrganizationConfiguration().getIsFormLoginEnabled()) + .isTrue(); + }) + .verifyComplete(); + + // Ensure that the form login is disabled after the update + final OrganizationConfiguration changes = new OrganizationConfiguration(); + changes.setIsFormLoginEnabled(FALSE); + Mono resultMono = organizationService + .updateOrganizationConfiguration(changes) + .then(organizationService.getOrganizationConfiguration()) + .map(Organization::getOrganizationConfiguration); + + StepVerifier.create(resultMono) + .assertNext(organizationConfiguration -> { + assertThat(organizationConfiguration.getIsFormLoginEnabled()) + .isFalse(); + }) + .verifyComplete(); + + // Ensure that the form login is enabled after the update + changes.setIsFormLoginEnabled(TRUE); + resultMono = organizationService + .updateOrganizationConfiguration(changes) + .then(organizationService.getOrganizationConfiguration()) + .map(Organization::getOrganizationConfiguration); + + StepVerifier.create(resultMono) + .assertNext(organizationConfiguration -> { + assertThat(organizationConfiguration.getIsFormLoginEnabled()) + .isTrue(); + }) + .verifyComplete(); + } + @Test @WithUserDetails("anonymousUser") void getOrganizationConfig_Valid_AnonymousUser() {