diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOAuth2UserServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOAuth2UserServiceCEImpl.java index 33cced2fd3f6..fc8ce6974ff5 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOAuth2UserServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOAuth2UserServiceCEImpl.java @@ -47,9 +47,7 @@ private Mono checkAndCreateUser(OAuth2User oAuth2User, OAuth2UserRequest u String username = oAuth2User.getName(); - return repository - .findByEmail(username) - .switchIfEmpty(repository.findFirstByEmailIgnoreCaseOrderByCreatedAtDesc(username)) + return this.findByUsername(username) .switchIfEmpty(Mono.defer(() -> { User newUser = new User(); newUser.setName(oAuth2User.getName()); @@ -76,4 +74,10 @@ private Mono checkAndCreateUser(OAuth2User oAuth2User, OAuth2UserRequest u error -> new AppsmithOAuth2AuthenticationException( new OAuth2Error(error.getAppErrorCode().toString(), error.getMessage(), ""))); } + + protected Mono findByUsername(String email) { + return repository + .findByEmail(email) + .switchIfEmpty(repository.findFirstByEmailIgnoreCaseOrderByCreatedAtDesc(email)); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOidcUserServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOidcUserServiceCEImpl.java index cbfc782c5e2f..29ef72f2a57e 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOidcUserServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/authentication/handlers/ce/CustomOidcUserServiceCEImpl.java @@ -49,9 +49,7 @@ public Mono checkAndCreateUser(OidcUser oidcUser, OidcUserRequest userRequ String username = (!StringUtils.isEmpty(oidcUser.getEmail())) ? oidcUser.getEmail() : oidcUser.getName(); - return repository - .findByEmail(username) - .switchIfEmpty(repository.findFirstByEmailIgnoreCaseOrderByCreatedAtDesc(username)) + return this.findByUsername(username) .switchIfEmpty(Mono.defer(() -> { User newUser = new User(); if (oidcUser.getUserInfo() != null) { @@ -82,4 +80,10 @@ public Mono checkAndCreateUser(OidcUser oidcUser, OidcUserRequest userRequ error -> new AppsmithOAuth2AuthenticationException( new OAuth2Error(error.getAppErrorCode().toString(), error.getMessage(), ""))); } + + protected Mono findByUsername(String email) { + return repository + .findByEmail(email) + .switchIfEmpty(repository.findFirstByEmailIgnoreCaseOrderByCreatedAtDesc(email)); + } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java index 6ceef7aed4a5..10c66781ecf4 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCE.java @@ -6,6 +6,8 @@ import org.springframework.data.mongodb.core.query.UpdateDefinition; import reactor.core.publisher.Mono; +import java.util.Set; + public interface CustomUserRepositoryCE extends AppsmithRepository { Mono findByEmail(String email, AclPermission aclPermission); @@ -14,5 +16,7 @@ public interface CustomUserRepositoryCE extends AppsmithRepository { Mono isUsersEmpty(); + Set getSystemGeneratedUserEmails(); + Mono updateById(String id, UpdateDefinition updateObj); } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java index b09ac27cc259..17db68683223 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/repositories/ce/CustomUserRepositoryCEImpl.java @@ -48,7 +48,8 @@ public Mono isUsersEmpty() { .map(count -> count == 0); } - protected Set getSystemGeneratedUserEmails() { + @Override + public Set getSystemGeneratedUserEmails() { Set systemGeneratedEmails = new HashSet<>(); systemGeneratedEmails.add(FieldName.ANONYMOUS_USER); return systemGeneratedEmails; diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCE.java index 2bdb85f67803..24dfffcbc0a9 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCE.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCE.java @@ -41,6 +41,8 @@ public interface UserServiceCE extends CrudService { Flux getAllByEmails(Set emails, AclPermission permission); + Mono signupIfAllowed(User user); + Mono updateWithoutPermission(String id, User update); Mono resendEmailVerification(ResendEmailVerificationDTO resendEmailVerificationDTO, String redirectUrl); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java index 35d24c352aa4..371d6b3a9ebc 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/UserServiceCEImpl.java @@ -510,7 +510,8 @@ public Mono createUser(User user) { * @param user User object representing the user to be created/enabled. * @return Publishes the user object, after having been saved. */ - private Mono signupIfAllowed(User user) { + @Override + public Mono signupIfAllowed(User user) { boolean isAdminUser = false; if (!commonConfig.getAdminEmails().contains(user.getEmail())) {