Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit55fbff9

Browse files
committed
Add handling for PTM apps
1 parentd33f51a commit55fbff9

File tree

8 files changed

+63
-8
lines changed

8 files changed

+63
-8
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public interface ApplicationRepository extends ReactiveMongoRepository<Applicati
3535
Flux<Application>findByIdIn(List<String>ids);
3636

3737
@Query(fields ="{_id : 1}")
38-
Flux<Application>findByPublicToAllIsTrueAndIdIn(Collection<String>ids);
38+
Flux<Application>findByPublicToAllIsTrueAndPublicToMarketplaceAndIdIn(Collection<String>ids,BooleanpublicToMarketplace);
3939

4040
Flux<Application>findByPublicToAllIsTrueAndPublicToMarketplaceIsTrue();
4141

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,10 @@ public Mono<Boolean> setApplicationPublicToMarketplace(String applicationId, boo
160160

161161
@NonEmptyMono
162162
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
163-
publicMono<Set<String>>getPublicApplicationIds(Collection<String>applicationIds) {
164-
returnrepository.findByPublicToAllIsTrueAndIdIn(applicationIds)
163+
publicMono<Set<String>>getPublicApplicationIds(Collection<String>applicationIds,BooleanisAnonymous) {
164+
returnrepository.findByPublicToAllIsTrueAndPublicToMarketplaceAndIdIn(applicationIds, !isAnonymous)
165165
.map(HasIdAndAuditing::getId)
166166
.collect(Collectors.toSet());
167+
167168
}
168169
}

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

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,22 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserPermission
4646
}
4747

4848
Set<String>applicationIds =newHashSet(resourceIds);
49-
returnMono.zip(applicationService.getPublicApplicationIds(applicationIds),
49+
returnMono.zip(applicationService.getPublicApplicationIds(applicationIds,Boolean.TRUE),
50+
templateSolution.getTemplateApplicationIds(applicationIds))
51+
.map(tuple -> {
52+
Set<String>publicAppIds =tuple.getT1();
53+
Set<String>templateAppIds =tuple.getT2();
54+
returncollectMap(union(publicAppIds,templateAppIds),identity(),this::getAnonymousUserPermission);
55+
});
56+
}
57+
58+
// This is for PTM apps that are public but only available to logged-in users
59+
@Override
60+
protectedMono<Map<String,List<ResourcePermission>>>getNonAnonymousUserPublicResourcePermissions
61+
(Collection<String>resourceIds,ResourceActionresourceAction) {
62+
63+
Set<String>applicationIds =newHashSet(resourceIds);
64+
returnMono.zip(applicationService.getPublicApplicationIds(applicationIds,Boolean.FALSE),
5065
templateSolution.getTemplateApplicationIds(applicationIds))
5166
.map(tuple -> {
5267
Set<String>publicAppIds =tuple.getT1();

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
packageorg.lowcoder.domain.permission.service;
22

33
importstaticorg.lowcoder.domain.permission.model.ResourceHolder.USER;
4-
importstaticorg.lowcoder.sdk.constants.Authentication.ANONYMOUS_USER_ID;
54

65
importjava.util.Collection;
76
importjava.util.Collections;
@@ -39,6 +38,11 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserPermission
3938
returnMono.just(Collections.emptyMap());
4039
}
4140

41+
@Override
42+
protectedMono<Map<String,List<ResourcePermission>>>getNonAnonymousUserPublicResourcePermissions(Collection<String>resourceIds,ResourceActionresourceAction) {
43+
returnMono.just(Collections.emptyMap());
44+
}
45+
4246
@Override
4347
protectedMono<String>getOrgId(StringresourceId) {
4448
returndatasourceService.getById(resourceId)

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

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,16 @@ public Mono<UserPermissionOnResourceStatus> checkUserPermissionStatusOnResource(
9494
returnpublicResourcePermissionMono;
9595
}
9696

97+
Mono<UserPermissionOnResourceStatus>nonAnonymousPublicResourcePermissionMono =getNonAnonymousUserPublicResourcePermissions(singletonList(resourceId),resourceAction)
98+
.map(it ->it.getOrDefault(resourceId,emptyList()))
99+
.map(it -> {
100+
if (!it.isEmpty()) {
101+
returnUserPermissionOnResourceStatus.success(it.get(0));
102+
}
103+
returnisAnonymousUser(userId) ?UserPermissionOnResourceStatus.anonymousUser() :UserPermissionOnResourceStatus.notInOrg();
104+
});
105+
106+
97107
Mono<UserPermissionOnResourceStatus>orgUserPermissionMono =getOrgId(resourceId)
98108
.flatMap(orgId ->orgMemberService.getOrgMember(orgId,userId))
99109
.flatMap(orgMember -> {
@@ -107,13 +117,17 @@ public Mono<UserPermissionOnResourceStatus> checkUserPermissionStatusOnResource(
107117
})
108118
.defaultIfEmpty(UserPermissionOnResourceStatus.notInOrg());
109119

110-
returnMono.zip(publicResourcePermissionMono,orgUserPermissionMono)
120+
returnMono.zip(publicResourcePermissionMono,nonAnonymousPublicResourcePermissionMono,orgUserPermissionMono)
111121
.map(tuple -> {
112122
UserPermissionOnResourceStatuspublicResourcePermission =tuple.getT1();
113-
UserPermissionOnResourceStatusorgUserPermission =tuple.getT2();
123+
UserPermissionOnResourceStatusnonAnonymousPublicResourcePermission =tuple.getT2();
124+
UserPermissionOnResourceStatusorgUserPermission =tuple.getT3();
114125
if (orgUserPermission.hasPermission()) {
115126
returnorgUserPermission;
116127
}
128+
if(nonAnonymousPublicResourcePermission.hasPermission()) {
129+
returnnonAnonymousPublicResourcePermission;
130+
}
117131
if (publicResourcePermission.hasPermission()) {
118132
returnpublicResourcePermission;
119133
}
@@ -132,6 +146,9 @@ private ResourcePermission getMaxPermission(List<ResourcePermission> permissions
132146
protectedabstractMono<Map<String,List<ResourcePermission>>>getAnonymousUserPermissions(Collection<String>resourceIds,
133147
ResourceActionresourceAction);
134148

149+
protectedabstractMono<Map<String,List<ResourcePermission>>>getNonAnonymousUserPublicResourcePermissions
150+
(Collection<String>resourceIds,ResourceActionresourceAction);
151+
135152
privateMono<Map<String,List<ResourcePermission>>>getAllMatchingPermissions0(StringuserId,StringorgId,ResourceTyperesourceType,
136153
Collection<String>resourceIds,
137154
ResourceActionresourceAction) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,8 @@ public Mono<ResourcePermission> checkAndReturnMaxPermission(String userId, Strin
214214
});
215215
}
216216

217-
publicMono<UserPermissionOnResourceStatus>checkUserPermissionStatusOnResource(StringuserId,StringresourceId,ResourceActionresourceAction) {
217+
publicMono<UserPermissionOnResourceStatus>checkUserPermissionStatusOnResource
218+
(StringuserId,StringresourceId,ResourceActionresourceAction) {
218219
ResourceTyperesourceType =resourceAction.getResourceType();
219220
varresourcePermissionHandler =getResourcePermissionHandler(resourceType);
220221
returnresourcePermissionHandler.checkUserPermissionStatusOnResource(userId,resourceId,resourceAction);

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,14 @@ public Mono<ResponseView<ApplicationView>> getPublishedApplication(@PathVariable
9797
.map(ResponseView::success);
9898
}
9999

100+
@Override
101+
publicMono<ResponseView<ApplicationView>>getPublishedMarketPlaceApplication(@PathVariableStringapplicationId) {
102+
returnapplicationApiService.getPublishedApplication(applicationId)
103+
.delayUntil(applicationView ->applicationApiService.updateUserApplicationLastViewTime(applicationId))
104+
.delayUntil(applicationView ->businessEventPublisher.publishApplicationCommonEvent(applicationView,VIEW))
105+
.map(ResponseView::success);
106+
}
107+
100108
@Override
101109
publicMono<ResponseView<ApplicationView>>update(@PathVariableStringapplicationId,
102110
@RequestBodyApplicationnewApplication) {

‎server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationEndpoints.java‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,15 @@ public interface ApplicationEndpoints
111111
@GetMapping("/{applicationId}/view")
112112
publicMono<ResponseView<ApplicationView>>getPublishedApplication(@PathVariableStringapplicationId);
113113

114+
@Operation(
115+
tags =TAG_APPLICATION_MANAGEMENT,
116+
operationId ="getMarketplaceApplicationDataInViewMode",
117+
summary ="Get Marketplace Application data in view mode",
118+
description ="Retrieve the DSL data of a Lowcoder Application in view-mode by its ID for the marketplace."
119+
)
120+
@GetMapping("/{applicationId}/view_marketplace")
121+
publicMono<ResponseView<ApplicationView>>getPublishedMarketPlaceApplication(@PathVariableStringapplicationId);
122+
114123
@Operation(
115124
tags =TAG_APPLICATION_MANAGEMENT,
116125
operationId ="updateApplication",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp