chore: Refactor sign up flow to support create workspace to be permission driven (#18981)

This commit is contained in:
Trisha Anand 2022-12-15 23:47:36 +05:30 committed by GitHub
parent 69bc3c06dc
commit 27b579fa68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
15 changed files with 50 additions and 46 deletions

View File

@ -499,11 +499,15 @@ public class UserServiceCEImpl extends BaseService<UserRepository, User, String>
final UserSignupDTO userSignupDTO = new UserSignupDTO();
userSignupDTO.setUser(savedUser);
log.debug("Creating blank default workspace for user '{}'.", savedUser.getEmail());
return workspaceService.createDefault(new Workspace(), savedUser)
.map(workspace -> {
log.debug("Created blank default workspace for user '{}'.", savedUser.getEmail());
userSignupDTO.setDefaultWorkspaceId(workspace.getId());
return userSignupDTO;
})
.onErrorResume(e -> {
log.debug("Error creating default workspace for user '{}'.", savedUser.getEmail(), e);
return Mono.just(userSignupDTO);
});
})
.flatMap(userSignupDTO -> findByEmail(userSignupDTO.getUser().getEmail()).map(user1 -> {

View File

@ -1,6 +1,5 @@
package com.appsmith.server.services.ce;
import com.appsmith.external.exceptions.BaseException;
import com.appsmith.server.acl.AclPermission;
import com.appsmith.server.domains.User;
import com.appsmith.server.domains.Workspace;
@ -21,7 +20,7 @@ public interface WorkspaceServiceCE extends CrudService<Workspace, String> {
Mono<Workspace> createDefault(Workspace workspace, User user);
Mono<Workspace> create(Workspace workspace, User user);
Mono<Workspace> create(Workspace workspace, User user, Boolean isDefault);
Mono<Workspace> findById(String id, AclPermission permission);

View File

@ -150,7 +150,7 @@ public class WorkspaceServiceCEImpl extends BaseService<WorkspaceRepository, Wor
public Mono<Workspace> createDefault(final Workspace workspace, User user) {
workspace.setName(user.computeFirstName() + "'s apps");
workspace.setIsAutoGeneratedWorkspace(true);
return create(workspace, user);
return create(workspace, user, TRUE);
}
/**
@ -163,16 +163,17 @@ public class WorkspaceServiceCEImpl extends BaseService<WorkspaceRepository, Wor
*
* @param workspace Workspace object to be created.
* @param user User to whom this workspace will belong to.
* @param isDefault
* @return Publishes the saved workspace.
*/
@Override
public Mono<Workspace> create(Workspace workspace, User user) {
public Mono<Workspace> create(Workspace workspace, User user, Boolean isDefault) {
if (workspace == null) {
return Mono.error(new AppsmithException(AppsmithError.INVALID_PARAMETER, FieldName.WORKSPACE));
}
// Does the user have permissions to create a workspace?
Mono<Boolean> createWorkspaceAllowedMono = isCreateWorkspaceAllowed();
Mono<Boolean> createWorkspaceAllowedMono = isCreateWorkspaceAllowed(isDefault);
if (workspace.getEmail() == null) {
workspace.setEmail(user.getEmail());
@ -229,7 +230,7 @@ public class WorkspaceServiceCEImpl extends BaseService<WorkspaceRepository, Wor
.flatMap(analyticsService::sendCreateEvent);
}
protected Mono<Boolean> isCreateWorkspaceAllowed() {
protected Mono<Boolean> isCreateWorkspaceAllowed(Boolean isDefaultWorkspace) {
return Mono.just(TRUE);
}
@ -403,7 +404,7 @@ public class WorkspaceServiceCEImpl extends BaseService<WorkspaceRepository, Wor
@Override
public Mono<Workspace> create(Workspace workspace) {
return sessionUserService.getCurrentUser()
.flatMap(user -> create(workspace, user));
.flatMap(user -> create(workspace, user, Boolean.FALSE));
}
@Override

View File

@ -141,7 +141,7 @@ public class ActionCollectionServiceTest {
toCreate.setName("ActionCollectionServiceTest");
if (workspaceId == null) {
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}

View File

@ -223,7 +223,7 @@ public class ApplicationServiceTest {
toCreate.setName("ApplicationServiceTest");
if (workspaceId == null) {
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
if (StringUtils.hasLength(gitConnectedApp.getId())) {

View File

@ -82,7 +82,7 @@ public class CurlImporterServiceTest {
toCreate.setName("CurlImporterServiceTest");
if (workspaceId == null) {
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
}

View File

@ -132,7 +132,7 @@ public class DatasourceContextServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("checkDecryptionOfAuthenticationDTOTest");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = workspace.getId();
Mono<Plugin> pluginMono = pluginService.findByPackageName("restapi-plugin");
@ -181,7 +181,7 @@ public class DatasourceContextServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("checkDecryptionOfAuthenticationDTONullPassword");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = workspace.getId();
Mono<Plugin> pluginMono = pluginService.findByPackageName("restapi-plugin");
@ -267,7 +267,7 @@ public class DatasourceContextServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("testDatasourceCreate_withUpdatableConnection_recreatesConnectionAlways");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = workspace.getId();
Mono<Plugin> pluginMono = pluginService.findByPackageName("restapi-plugin");

View File

@ -115,7 +115,7 @@ public class DatasourceServiceTest {
toCreate.setName("DatasourceServiceTest");
if (!StringUtils.hasLength(workspaceId)) {
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
}
@ -166,7 +166,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createDatasourceWithNullPluginId");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -224,7 +224,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createDatasourceNotInstalledPlugin");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -265,7 +265,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createDatasourceValid");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -343,7 +343,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createAndUpdateDatasourceValidDB");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -413,7 +413,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createAndUpdateDatasourceDifferentAuthentication");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -486,7 +486,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createNamelessDatasource");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -536,7 +536,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-testDatasourceValid");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -576,7 +576,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-testDatasourceEmptyFields");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -634,7 +634,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-deleteDatasourceWithoutActions");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -676,7 +676,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName(name);
Workspace createdWorkspace = workspaceService.create(toCreate, apiUser).block();
Workspace createdWorkspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = createdWorkspace.getId();
Mono<Datasource> datasourceMono = Mono
@ -750,7 +750,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName(name);
Workspace createdWorkspace = workspaceService.create(toCreate, apiUser).block();
Workspace createdWorkspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = createdWorkspace.getId();
Mono<Datasource> datasourceMono = Mono
@ -834,7 +834,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-checkEncryptionOfAuthenticationDTOTest");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -877,7 +877,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-checkEncryptionOfAuthenticationDTONullPassword");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -919,7 +919,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-checkEncryptionOfAuthenticationDTOAfterUpdate");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -978,7 +978,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-checkEncryptionOfAuthenticationDTOAfterRemoval");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -1029,7 +1029,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createDatasourceWithInvalidCharsInHost");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = workspace.getId();
Mono<Workspace> workspaceResponse = workspaceService.findById(workspaceId, READ_WORKSPACES);
@ -1103,7 +1103,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-createDatasourceWithHostnameStartingWithSpace");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -1142,7 +1142,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-testHintMessageOnLocalhostUrlOnTestDatasourceEvent");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -1195,7 +1195,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-testHintMessageOnLocalhostUrlOnCreateEventOnApiDatasource");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -1238,7 +1238,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-testHintMessageOnLocalhostUrlOnUpdateEventOnApiDatasource");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -1336,7 +1336,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-testHintMessageOnLocalhostIPAddressOnUpdateEventOnNonApiDatasource");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -1400,7 +1400,7 @@ public class DatasourceServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("DatasourceServiceTest-testHintMessageNPE");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}

View File

@ -179,7 +179,7 @@ public class GitServiceTest {
toCreate.setName("Git Service Test");
if (!org.springframework.util.StringUtils.hasLength(workspaceId)) {
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
}

View File

@ -148,7 +148,7 @@ public class LayoutActionServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("LayoutActionServiceTest");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
if (testApp == null && testPage == null) {

View File

@ -105,7 +105,7 @@ public class LayoutServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("LayoutServiceTest");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
datasource = new Datasource();

View File

@ -103,7 +103,7 @@ public class MockDataServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("MockDataServiceTest");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
@ -142,7 +142,7 @@ public class MockDataServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("MockDataServiceTest testCreateMockDataSetsMongo");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = workspace.getId();
Plugin pluginMono = pluginService.findByName("Installed Plugin Name").block();
@ -273,7 +273,7 @@ public class MockDataServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("MockDataServiceTest testCreateMockDataSetsDuplicateName");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
String workspaceId = workspace.getId();
Plugin pluginMono = pluginService.findByName("Installed Plugin Name").block();

View File

@ -138,7 +138,7 @@ public class PageServiceTest {
Workspace toCreate = new Workspace();
toCreate.setName("PageServiceTest");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}
}

View File

@ -196,7 +196,7 @@ public class ActionServiceCE_Test {
toCreate.setName("ActionServiceCE_Test");
if (workspaceId == null) {
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
}

View File

@ -144,7 +144,7 @@ class RefactoringSolutionCETest {
Workspace toCreate = new Workspace();
toCreate.setName("LayoutActionServiceTest");
Workspace workspace = workspaceService.create(toCreate, apiUser).block();
Workspace workspace = workspaceService.create(toCreate, apiUser, Boolean.FALSE).block();
workspaceId = workspace.getId();
if (testApp == null && testPage == null) {