chore: Fix inconsistency in behaviour when re-marking public (#19031)

Signed-off-by: Shrikant Sharat Kandula <shrikant@appsmith.com>
This commit is contained in:
Shrikant Sharat Kandula 2022-12-19 15:29:58 +05:30 committed by GitHub
parent 60806f7761
commit 467a1f65eb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,7 @@
package com.appsmith.server.services.ce; package com.appsmith.server.services.ce;
import com.appsmith.external.constants.AnalyticsEvents; import com.appsmith.external.constants.AnalyticsEvents;
import com.appsmith.external.models.ActionDTO;
import com.appsmith.external.models.Datasource; import com.appsmith.external.models.Datasource;
import com.appsmith.external.models.Policy; import com.appsmith.external.models.Policy;
import com.appsmith.server.acl.AclPermission; import com.appsmith.server.acl.AclPermission;
@ -19,7 +20,6 @@ import com.appsmith.server.domains.Page;
import com.appsmith.server.domains.QApplication; import com.appsmith.server.domains.QApplication;
import com.appsmith.server.domains.Theme; import com.appsmith.server.domains.Theme;
import com.appsmith.server.domains.User; import com.appsmith.server.domains.User;
import com.appsmith.external.models.ActionDTO;
import com.appsmith.server.dtos.ApplicationAccessDTO; import com.appsmith.server.dtos.ApplicationAccessDTO;
import com.appsmith.server.dtos.GitAuthDTO; import com.appsmith.server.dtos.GitAuthDTO;
import com.appsmith.server.dtos.GitDeployKeyDTO; import com.appsmith.server.dtos.GitDeployKeyDTO;
@ -39,7 +39,6 @@ import com.appsmith.server.services.ConfigService;
import com.appsmith.server.services.PermissionGroupService; import com.appsmith.server.services.PermissionGroupService;
import com.appsmith.server.services.SessionUserService; import com.appsmith.server.services.SessionUserService;
import com.appsmith.server.services.TenantService; import com.appsmith.server.services.TenantService;
import com.mongodb.DBObject;
import com.appsmith.server.solutions.ApplicationPermission; import com.appsmith.server.solutions.ApplicationPermission;
import com.appsmith.server.solutions.DatasourcePermission; import com.appsmith.server.solutions.DatasourcePermission;
import com.mongodb.client.result.UpdateResult; import com.mongodb.client.result.UpdateResult;
@ -48,10 +47,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DuplicateKeyException; import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
@ -67,7 +62,6 @@ import java.util.Set;
import static com.appsmith.server.acl.AclPermission.MANAGE_APPLICATIONS; import static com.appsmith.server.acl.AclPermission.MANAGE_APPLICATIONS;
import static com.appsmith.server.acl.AclPermission.READ_APPLICATIONS; import static com.appsmith.server.acl.AclPermission.READ_APPLICATIONS;
import static org.apache.commons.lang3.StringUtils.isBlank; import static org.apache.commons.lang3.StringUtils.isBlank;
@Slf4j @Slf4j
@ -329,19 +323,17 @@ public class ApplicationServiceCEImpl extends BaseService<ApplicationRepository,
boolean isApplicationPublic = permissionGroupService.isEntityAccessible(application, applicationPermission.getReadPermission().getValue(), publicPermissionGroupId); boolean isApplicationPublic = permissionGroupService.isEntityAccessible(application, applicationPermission.getReadPermission().getValue(), publicPermissionGroupId);
// Validity checks before proceeding further if (applicationAccessDTO.getPublicAccess().equals(isApplicationPublic)) {
if (isApplicationPublic && applicationAccessDTO.getPublicAccess()) { // No change. Return the application as is.
// No change. The required public access is the same as current public access. Do nothing
return Mono.just(application); return Mono.just(application);
} }
if (!isApplicationPublic && applicationAccessDTO.getPublicAccess().equals(false)) {
return Mono.error(new AppsmithException(AppsmithError.UNSUPPORTED_OPERATION));
}
// Now update the policies to change the access to the application // Now update the policies to change the access to the application
return generateAndSetPoliciesForView(application, publicPermissionGroupId, return generateAndSetPoliciesForView(
applicationAccessDTO.getPublicAccess()); application,
publicPermissionGroupId,
applicationAccessDTO.getPublicAccess()
);
}) })
.flatMap(this::setTransientFields); .flatMap(this::setTransientFields);