Skip to content

Commit 91779ce

Browse files
committed
fix: fixed viewing of apps of other users
1 parent 727a724 commit 91779ce

File tree

6 files changed

+31
-18
lines changed

6 files changed

+31
-18
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public interface ApplicationRepository extends ReactiveMongoRepository<Applicati
3232

3333
Flux<Application> findByIdIn(Collection<String> ids);
3434

35+
Flux<Application> findByCreatedByAndIdIn(String userId, Collection<String> ids);
36+
3537
/**
3638
* Filter public applications from list of supplied IDs
3739
*/

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ public interface ApplicationService {
5252

5353
@NonEmptyMono
5454
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
55-
Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType requestType, Collection<String> applicationIds, boolean isAnonymous, Boolean isPrivateMarketplace);
55+
Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType requestType, Collection<String> applicationIds, String userId, Boolean isPrivateMarketplace);
5656

5757
@NonEmptyMono
5858
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
5959
Mono<Set<String>> getPublicApplicationIds(Collection<String> applicationIds);
6060

6161
@NonEmptyMono
6262
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
63-
Mono<Set<String>> getPrivateApplicationIds(Collection<String> applicationIds);
63+
Mono<Set<String>> getPrivateApplicationIds(Collection<String> applicationIds, String userId);
6464

6565
@NonEmptyMono
6666
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,17 @@
77
import java.util.stream.Collectors;
88

99
import lombok.RequiredArgsConstructor;
10+
import org.apache.commons.lang3.StringUtils;
1011
import org.lowcoder.domain.application.model.Application;
1112
import org.lowcoder.domain.application.model.ApplicationRequestType;
1213
import org.lowcoder.domain.application.model.ApplicationStatus;
1314
import org.lowcoder.domain.application.repository.ApplicationRepository;
15+
import org.lowcoder.domain.organization.repository.OrganizationRepository;
16+
import org.lowcoder.domain.organization.service.OrgMemberService;
1417
import org.lowcoder.domain.permission.model.ResourceRole;
1518
import org.lowcoder.domain.permission.service.ResourcePermissionService;
19+
import org.lowcoder.domain.user.repository.UserRepository;
20+
import org.lowcoder.domain.user.service.UserService;
1621
import org.lowcoder.infra.annotation.NonEmptyMono;
1722
import org.lowcoder.infra.mongo.MongoUpsertHelper;
1823
import org.lowcoder.sdk.constants.FieldName;
@@ -37,6 +42,7 @@ public class ApplicationServiceImpl implements ApplicationService {
3742
private final MongoUpsertHelper mongoUpsertHelper;
3843
private final ResourcePermissionService resourcePermissionService;
3944
private final ApplicationRepository repository;
45+
private final UserRepository userRepository;
4046

4147
@Override
4248
public Mono<Application> findById(String id) {
@@ -219,8 +225,8 @@ public Mono<Boolean> setApplicationAsAgencyProfile(String applicationId, boolean
219225
@Override
220226
@NonEmptyMono
221227
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
222-
public Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType requestType, Collection<String> applicationIds, boolean isAnonymous, Boolean isPrivateMarketplace) {
223-
228+
public Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType requestType, Collection<String> applicationIds, String userId, Boolean isPrivateMarketplace) {
229+
boolean isAnonymous = StringUtils.isBlank(userId);
224230
switch(requestType)
225231
{
226232
case PUBLIC_TO_ALL:
@@ -230,7 +236,7 @@ public Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType
230236
}
231237
else
232238
{
233-
return getPrivateApplicationIds(applicationIds);
239+
return getPrivateApplicationIds(applicationIds, userId);
234240
}
235241
case PUBLIC_TO_MARKETPLACE:
236242
return getPublicMarketplaceApplicationIds(applicationIds, isAnonymous, isPrivateMarketplace);
@@ -262,11 +268,16 @@ public Mono<Set<String>> getPublicApplicationIds(Collection<String> applicationI
262268
@Override
263269
@NonEmptyMono
264270
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
265-
public Mono<Set<String>> getPrivateApplicationIds(Collection<String> applicationIds) {
271+
public Mono<Set<String>> getPrivateApplicationIds(Collection<String> applicationIds, String userId) {
272+
266273
// TODO: in 2.4.0 we need to check whether the app was published or not
267-
return repository.findByIdIn(applicationIds)
274+
return repository.findByCreatedByAndIdIn(userId, applicationIds)
268275
.map(HasIdAndAuditing::getId)
269276
.collect(Collectors.toSet());
277+
278+
// return repository.findByIdIn(applicationIds)
279+
// .map(HasIdAndAuditing::getId)
280+
// .collect(Collectors.toSet());
270281
}
271282

272283

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/permission/service/ApplicationPermissionHandler.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,10 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserPermission
5353
// This is for PTM apps that are public but only available to logged-in users
5454
@Override
5555
protected Mono<Map<String, List<ResourcePermission>>> getNonAnonymousUserPublicResourcePermissions
56-
(Collection<String> resourceIds, ResourceAction resourceAction) {
56+
(Collection<String> resourceIds, ResourceAction resourceAction, String userId) {
5757

5858
Set<String> applicationIds = newHashSet(resourceIds);
59-
return Mono.zip(applicationService.getPrivateApplicationIds(applicationIds),
59+
return Mono.zip(applicationService.getPrivateApplicationIds(applicationIds, userId),
6060
templateSolutionService.getTemplateApplicationIds(applicationIds))
6161
.map(tuple -> {
6262
Set<String> publicAppIds = tuple.getT1();
@@ -75,7 +75,7 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserApplicatio
7575
}
7676

7777
Set<String> applicationIds = newHashSet(resourceIds);
78-
return Mono.zip(applicationService.getFilteredPublicApplicationIds(requestType, applicationIds, Boolean.TRUE, config.getMarketplace().isPrivateMode())
78+
return Mono.zip(applicationService.getFilteredPublicApplicationIds(requestType, applicationIds, null, config.getMarketplace().isPrivateMode())
7979
.defaultIfEmpty(new HashSet<>()),
8080
templateSolutionService.getTemplateApplicationIds(applicationIds)
8181
.defaultIfEmpty(new HashSet<>())
@@ -88,9 +88,9 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserApplicatio
8888

8989
@Override
9090
protected Mono<Map<String, List<ResourcePermission>>> getNonAnonymousUserApplicationPublicResourcePermissions(
91-
Collection<String> resourceIds, ResourceAction resourceAction, ApplicationRequestType requestType) {
91+
Collection<String> resourceIds, ResourceAction resourceAction, ApplicationRequestType requestType, String userId) {
9292
Set<String> applicationIds = newHashSet(resourceIds);
93-
return Mono.zip(applicationService.getFilteredPublicApplicationIds(requestType, applicationIds, Boolean.FALSE, config.getMarketplace().isPrivateMode()),
93+
return Mono.zip(applicationService.getFilteredPublicApplicationIds(requestType, applicationIds, userId, config.getMarketplace().isPrivateMode()),
9494
templateSolutionService.getTemplateApplicationIds(applicationIds))
9595
.map(tuple -> {
9696
Set<String> publicAppIds = tuple.getT1();

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/permission/service/DatasourcePermissionHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserPermission
3636
}
3737

3838
@Override
39-
protected Mono<Map<String, List<ResourcePermission>>> getNonAnonymousUserPublicResourcePermissions(Collection<String> resourceIds, ResourceAction resourceAction) {
39+
protected Mono<Map<String, List<ResourcePermission>>> getNonAnonymousUserPublicResourcePermissions(Collection<String> resourceIds, ResourceAction resourceAction, String userId) {
4040
return Mono.just(Collections.emptyMap());
4141
}
4242

@@ -48,7 +48,7 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserApplicatio
4848

4949
@Override
5050
protected Mono<Map<String, List<ResourcePermission>>> getNonAnonymousUserApplicationPublicResourcePermissions(
51-
Collection<String> resourceIds, ResourceAction resourceAction, ApplicationRequestType requestType) {
51+
Collection<String> resourceIds, ResourceAction resourceAction, ApplicationRequestType requestType, String userId) {
5252
return Mono.just(Collections.emptyMap());
5353
}
5454

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/permission/service/ResourcePermissionHandler.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ public Mono<UserPermissionOnResourceStatus> checkUserPermissionStatusOnResource(
8888
return publicResourcePermissionMono;
8989
}
9090

91-
Mono<UserPermissionOnResourceStatus> nonAnonymousPublicResourcePermissionMono = getNonAnonymousUserPublicResourcePermissions(singletonList(resourceId), resourceAction)
91+
Mono<UserPermissionOnResourceStatus> nonAnonymousPublicResourcePermissionMono = getNonAnonymousUserPublicResourcePermissions(singletonList(resourceId), resourceAction, userId)
9292
.map(it -> it.getOrDefault(resourceId, emptyList()))
9393
.map(it -> {
9494
if (!it.isEmpty()) {
@@ -141,13 +141,13 @@ protected abstract Mono<Map<String, List<ResourcePermission>>> getAnonymousUserP
141141
ResourceAction resourceAction);
142142

143143
protected abstract Mono<Map<String, List<ResourcePermission>>> getNonAnonymousUserPublicResourcePermissions
144-
(Collection<String> resourceIds, ResourceAction resourceAction);
144+
(Collection<String> resourceIds, ResourceAction resourceAction, String userId);
145145

146146
protected abstract Mono<Map<String, List<ResourcePermission>>> getAnonymousUserApplicationPermissions(Collection<String> resourceIds,
147147
ResourceAction resourceAction, ApplicationRequestType requestType);
148148

149149
protected abstract Mono<Map<String, List<ResourcePermission>>> getNonAnonymousUserApplicationPublicResourcePermissions
150-
(Collection<String> resourceIds, ResourceAction resourceAction, ApplicationRequestType requestType);
150+
(Collection<String> resourceIds, ResourceAction resourceAction, ApplicationRequestType requestType, String userId);
151151

152152

153153
private Mono<Map<String, List<ResourcePermission>>> getAllMatchingPermissions0(String userId, String orgId, ResourceType resourceType,
@@ -229,7 +229,7 @@ public Mono<UserPermissionOnResourceStatus> checkUserPermissionStatusOnApplicati
229229
return publicResourcePermissionMono;
230230
}
231231

232-
Mono<UserPermissionOnResourceStatus> nonAnonymousPublicResourcePermissionMono = getNonAnonymousUserApplicationPublicResourcePermissions(singletonList(resourceId), resourceAction, requestType)
232+
Mono<UserPermissionOnResourceStatus> nonAnonymousPublicResourcePermissionMono = getNonAnonymousUserApplicationPublicResourcePermissions(singletonList(resourceId), resourceAction, requestType, userId)
233233
.map(it -> it.getOrDefault(resourceId, emptyList()))
234234
.map(it -> {
235235
if (!it.isEmpty()) {

0 commit comments

Comments
 (0)