From f078ec0b32774a02bf2a481a744e7382b7cf2fcc Mon Sep 17 00:00:00 2001 From: Trisha Anand Date: Wed, 25 Dec 2024 13:12:45 +0530 Subject: [PATCH] chore: Minor code refactor for seat based pricing (#38359) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description > [!TIP] > _Add a TL;DR when the description is longer than 500 words or extremely technical (helps the content, marketing, and DevRel team)._ > > _Please also include relevant motivation and context. List any dependencies that are required for this change. Add links to Notion, Figma or any other documents that might be relevant to the PR._ Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /test sanity ### :mag: Cypress test results > [!TIP] > 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉 > Workflow run: > Commit: a06c91677563b3b78d50f3a439ebb9b83196d130 > Cypress dashboard. > Tags: `@tag.Sanity` > Spec: >
Wed, 25 Dec 2024 07:41:48 UTC ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No ## Summary by CodeRabbit - **New Features** - Introduced methods for user retrieval and signup conditions, enhancing user management capabilities. - Added functionality to retrieve system-generated user emails. - **Bug Fixes** - Improved user lookup process by centralizing logic into dedicated methods. - **Documentation** - Updated method visibility for better accessibility of user-related functionalities. --- .../handlers/ce/CustomOAuth2UserServiceCEImpl.java | 10 +++++++--- .../handlers/ce/CustomOidcUserServiceCEImpl.java | 10 +++++++--- .../server/repositories/ce/CustomUserRepositoryCE.java | 4 ++++ .../repositories/ce/CustomUserRepositoryCEImpl.java | 3 ++- .../com/appsmith/server/services/ce/UserServiceCE.java | 2 ++ .../appsmith/server/services/ce/UserServiceCEImpl.java | 3 ++- 6 files changed, 24 insertions(+), 8 deletions(-) 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 33cced2fd3..fc8ce6974f 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 @@ public class CustomOAuth2UserServiceCEImpl extends DefaultReactiveOAuth2UserServ 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 @@ public class CustomOAuth2UserServiceCEImpl extends DefaultReactiveOAuth2UserServ 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 cbfc782c5e..29ef72f2a5 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 class CustomOidcUserServiceCEImpl extends OidcReactiveOAuth2UserService { 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 class CustomOidcUserServiceCEImpl extends OidcReactiveOAuth2UserService { 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 6ceef7aed4..10c66781ec 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 com.appsmith.server.repositories.AppsmithRepository; 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 b09ac27cc2..17db686832 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 class CustomUserRepositoryCEImpl extends BaseAppsmithRepositoryImpl .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 2bdb85f678..24dfffcbc0 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 35d24c352a..371d6b3a9e 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 class UserServiceCEImpl extends BaseService * @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())) {