Allow signup for admins, even if publicly disabled (#2520)
* Allow signup for admins, even if publicly disabled * Use Set for admin email addresses * Set two admin emails in test
This commit is contained in:
parent
94cae231c1
commit
23cffc208f
|
|
@ -17,6 +17,7 @@ import javax.validation.Validator;
|
|||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
|
|
@ -28,6 +29,9 @@ public class CommonConfig {
|
|||
@Value("${signup.disabled}")
|
||||
private boolean isSignupDisabled;
|
||||
|
||||
@Value("${admin.emails}")
|
||||
private Set<String> adminEmails = Collections.emptySet();
|
||||
|
||||
@Value("${oauth2.allowed-domains}")
|
||||
private String allowedDomainList;
|
||||
|
||||
|
|
|
|||
|
|
@ -520,7 +520,7 @@ public class UserServiceImpl extends BaseService<UserRepository, User, String> i
|
|||
return Mono.error(new AppsmithException(AppsmithError.USER_ALREADY_EXISTS_SIGNUP, user.getUsername()));
|
||||
})
|
||||
.switchIfEmpty(
|
||||
commonConfig.isSignupDisabled()
|
||||
commonConfig.isSignupDisabled() && !commonConfig.getAdminEmails().contains(user.getEmail())
|
||||
? Mono.error(new AppsmithException(AppsmithError.SIGNUP_DISABLED))
|
||||
: userCreate(user)
|
||||
)
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ spring.mail.username=${APPSMITH_MAIL_USERNAME:}
|
|||
spring.mail.password=${APPSMITH_MAIL_PASSWORD:}
|
||||
spring.mail.properties.mail.smtp.auth=${APPSMITH_MAIL_SMTP_AUTH:}
|
||||
spring.mail.properties.mail.smtp.starttls.enable=${APPSMITH_MAIL_SMTP_TLS_ENABLED:}
|
||||
admin.emails = ${APPSMITH_ADMIN_EMAILS:}
|
||||
|
||||
# Marketplace Properties
|
||||
marketplace.base-url = ${APPSMITH_MARKETPLACE_URL:}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
@Slf4j
|
||||
@RunWith(SpringRunner.class)
|
||||
@SpringBootTest(properties = { "signup.disabled = true" })
|
||||
@SpringBootTest(properties = { "signup.disabled = true", "admin.emails = dummy_admin@appsmith.com,dummy2@appsmith.com" })
|
||||
@DirtiesContext
|
||||
public class UserServiceWithDisabledSignupTest {
|
||||
|
||||
|
|
@ -88,6 +88,48 @@ public class UserServiceWithDisabledSignupTest {
|
|||
.verify();
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithMockAppsmithUser
|
||||
public void createNewAdminValidWhenDisabled() {
|
||||
User newUser = new User();
|
||||
newUser.setEmail("dummy_admin@appsmith.com");
|
||||
newUser.setPassword("admin-password");
|
||||
|
||||
Mono<User> userMono = userService.create(newUser);
|
||||
|
||||
StepVerifier.create(userMono)
|
||||
.assertNext(user -> {
|
||||
assertThat(user).isNotNull();
|
||||
assertThat(user.getId()).isNotNull();
|
||||
assertThat(user.getEmail()).isEqualTo("dummy_admin@appsmith.com");
|
||||
assertThat(user.getName()).isEqualTo("dummy_admin@appsmith.com");
|
||||
assertThat(user.getPolicies()).isNotEmpty();
|
||||
assertThat(user.getOrganizationIds()).isNullOrEmpty();
|
||||
})
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@WithMockAppsmithUser
|
||||
public void createNewAdminValidWhenDisabled2() {
|
||||
User newUser = new User();
|
||||
newUser.setEmail("dummy2@appsmith.com");
|
||||
newUser.setPassword("admin-password");
|
||||
|
||||
Mono<User> userMono = userService.create(newUser);
|
||||
|
||||
StepVerifier.create(userMono)
|
||||
.assertNext(user -> {
|
||||
assertThat(user).isNotNull();
|
||||
assertThat(user.getId()).isNotNull();
|
||||
assertThat(user.getEmail()).isEqualTo("dummy2@appsmith.com");
|
||||
assertThat(user.getName()).isEqualTo("dummy2@appsmith.com");
|
||||
assertThat(user.getPolicies()).isNotEmpty();
|
||||
assertThat(user.getOrganizationIds()).isNullOrEmpty();
|
||||
})
|
||||
.verifyComplete();
|
||||
}
|
||||
|
||||
@Test
|
||||
@DirtiesContext
|
||||
@WithUserDetails(value = "api_user")
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user