Merge branch 'bug/acl-update-layout' into 'feature/acl-spring-object'

Fixed the repository function which was failing for fetching actions during updateLayout.

See merge request theappsmith/internal-tools-server!378
This commit is contained in:
Trisha Anand 2020-06-11 07:22:16 +00:00
commit dde850e367
3 changed files with 10 additions and 24 deletions

View File

@ -15,10 +15,10 @@ public interface CustomActionRepository extends AppsmithRepository<Action> {
Flux<Action> findByPageId(String pageId, AclPermission aclPermission);
Flux<Action> findDistinctActionsByNameInAndPageIdAndActionConfiguration_HttpMethod(Set<String> names,
String pageId,
String httpMethod,
AclPermission aclPermission);
Flux<Action> findActionsByNameInAndPageIdAndActionConfiguration_HttpMethod(Set<String> names,
String pageId,
String httpMethod,
AclPermission aclPermission);
Flux<Action> findAllActionsByNameAndPageIds(String name, List<String> pageIds, AclPermission aclPermission, Sort sort);
}

View File

@ -4,13 +4,10 @@ import com.appsmith.external.models.QActionConfiguration;
import com.appsmith.server.acl.AclPermission;
import com.appsmith.server.domains.Action;
import com.appsmith.server.domains.QAction;
import com.appsmith.server.domains.User;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.ReactiveMongoOperations;
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.security.core.context.ReactiveSecurityContextHolder;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@ -41,10 +38,10 @@ public class CustomActionRepositoryImpl extends BaseAppsmithRepositoryImpl<Actio
}
@Override
public Flux<Action> findDistinctActionsByNameInAndPageIdAndActionConfiguration_HttpMethod(Set<String> names,
String pageId,
String httpMethod,
AclPermission aclPermission) {
public Flux<Action> findActionsByNameInAndPageIdAndActionConfiguration_HttpMethod(Set<String> names,
String pageId,
String httpMethod,
AclPermission aclPermission) {
Criteria namesCriteria = where(fieldName(QAction.action.name)).in(names);
Criteria pageCriteria = where(fieldName(QAction.action.pageId)).is(pageId);
String httpMethodQueryKey = fieldName(QAction.action.actionConfiguration)
@ -52,19 +49,8 @@ public class CustomActionRepositoryImpl extends BaseAppsmithRepositoryImpl<Actio
+ fieldName(QActionConfiguration.actionConfiguration.httpMethod);
Criteria httpMethodCriteria = where(httpMethodQueryKey).is(httpMethod);
List<Criteria> criterias = List.of(namesCriteria, pageCriteria, httpMethodCriteria);
return ReactiveSecurityContextHolder.getContext()
.map(ctx -> ctx.getAuthentication())
.flatMapMany(auth -> {
User user = (User) auth.getPrincipal();
Query query = new Query();
criterias.stream()
.forEach(criteria -> query.addCriteria(criteria));
query.addCriteria(new Criteria().andOperator(notDeleted(), userAcl(user, aclPermission)));
return mongoOperations.findDistinct(query, fieldName(QAction.action.name),
Action.class, Action.class)
.map(action -> setUserPermissionsInObject(action, user));
});
return queryAll(criterias, aclPermission);
}
@Override

View File

@ -463,7 +463,7 @@ public class ActionServiceImpl extends BaseService<ActionRepository, Action, Str
@Override
public Flux<Action> findDistinctRestApiActionsByNameInAndPageIdAndHttpMethod(Set<String> names, String pageId, String httpMethod) {
return repository.findDistinctActionsByNameInAndPageIdAndActionConfiguration_HttpMethod(names, pageId,
return repository.findActionsByNameInAndPageIdAndActionConfiguration_HttpMethod(names, pageId,
httpMethod, READ_ACTIONS);
}