Skip to content

Commit d5c9c32

Browse files
committed
fix: for now, allow to view non-published apps for logged in users
1 parent de03572 commit d5c9c32

File tree

4 files changed

+36
-24
lines changed

4 files changed

+36
-24
lines changed

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

+1-12
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33

44
import java.util.Collection;
5-
import java.util.List;
65

76
import javax.annotation.Nonnull;
87

@@ -33,17 +32,7 @@ public interface ApplicationRepository extends ReactiveMongoRepository<Applicati
3332
@Query("{$or : [{'publishedApplicationDSL.queries.datasourceId':?0},{'editingApplicationDSL.queries.datasourceId':?0}]}")
3433
Flux<Application> findByDatasourceId(String datasourceId);
3534

36-
Flux<Application> findByIdIn(List<String> ids);
37-
38-
39-
// Falk: Why to combine? Marketplace-List and Agency-List are different Endpoints
40-
41-
/* @Query(value = "{$and:[{'publicToAll':true},{'$or':[{'publicToMarketplace':?0},{'agencyProfile':?1}]}, {'_id': { $in: ?2}}]}", fields = "{_id : 1}")
42-
Flux<Application> findByPublicToAllIsTrueAndPublicToMarketplaceIsOrAgencyProfileIsAndIdIn
43-
(Boolean publicToMarketplace, Boolean agencyProfile, Collection<String> ids); */
44-
45-
// this we do not need
46-
// Flux<Application> findByPublicToAllIsTrueAndPublicToMarketplaceIsAndAgencyProfileIsAndIdIn(Boolean publicToMarketplace, Boolean agencyProfile, Collection<String> ids);
35+
Flux<Application> findByIdIn(Collection<String> ids);
4736

4837
/**
4938
* Filter public applications from list of supplied IDs

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

+22-2
Original file line numberDiff line numberDiff line change
@@ -206,12 +206,19 @@ public Mono<Boolean> setApplicationAsAgencyProfile(String applicationId, boolean
206206

207207
@NonEmptyMono
208208
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
209-
public Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType requestType, Collection<String> applicationIds, Boolean isAnonymous, Boolean isPrivateMarketplace) {
209+
public Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType requestType, Collection<String> applicationIds, boolean isAnonymous, Boolean isPrivateMarketplace) {
210210

211211
switch(requestType)
212212
{
213213
case PUBLIC_TO_ALL:
214-
return getPublicApplicationIds(applicationIds);
214+
if (isAnonymous)
215+
{
216+
return getPublicApplicationIds(applicationIds);
217+
}
218+
else
219+
{
220+
return getPrivateApplicationIds(applicationIds);
221+
}
215222
case PUBLIC_TO_MARKETPLACE:
216223
return getPublicMarketplaceApplicationIds(applicationIds, isAnonymous, isPrivateMarketplace);
217224
case AGENCY_PROFILE:
@@ -235,6 +242,19 @@ public Mono<Set<String>> getPublicApplicationIds(Collection<String> applicationI
235242
}
236243

237244

245+
/**
246+
* Find all private applications for viewing.
247+
*/
248+
@NonEmptyMono
249+
@SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
250+
public Mono<Set<String>> getPrivateApplicationIds(Collection<String> applicationIds) {
251+
// TODO: in 2.4.0 we need to check whether the app was published or not
252+
return repository.findByIdIn(applicationIds)
253+
.map(HasIdAndAuditing::getId)
254+
.collect(Collectors.toSet());
255+
}
256+
257+
238258
/**
239259
* Find all marketplace applications - filter based on whether user is anonymous and whether it's a private marketplace
240260
*/

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

+7-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import java.util.Collection;
1212
import java.util.Collections;
13+
import java.util.HashSet;
1314
import java.util.List;
1415
import java.util.Map;
1516
import java.util.Set;
@@ -62,7 +63,7 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserPermission
6263
(Collection<String> resourceIds, ResourceAction resourceAction) {
6364

6465
Set<String> applicationIds = newHashSet(resourceIds);
65-
return Mono.zip(applicationService.getPublicApplicationIds(applicationIds),
66+
return Mono.zip(applicationService.getPrivateApplicationIds(applicationIds),
6667
templateSolution.getTemplateApplicationIds(applicationIds))
6768
.map(tuple -> {
6869
Set<String> publicAppIds = tuple.getT1();
@@ -81,9 +82,11 @@ protected Mono<Map<String, List<ResourcePermission>>> getAnonymousUserApplicatio
8182
}
8283

8384
Set<String> applicationIds = newHashSet(resourceIds);
84-
return Mono.zip(applicationService.getFilteredPublicApplicationIds(requestType, applicationIds, Boolean.TRUE, config.getMarketplace().isPrivateMode()),
85-
templateSolution.getTemplateApplicationIds(applicationIds))
86-
.map(tuple -> {
85+
return Mono.zip(applicationService.getFilteredPublicApplicationIds(requestType, applicationIds, Boolean.TRUE, config.getMarketplace().isPrivateMode())
86+
.defaultIfEmpty(new HashSet<>()),
87+
templateSolution.getTemplateApplicationIds(applicationIds)
88+
.defaultIfEmpty(new HashSet<>())
89+
).map(tuple -> {
8790
Set<String> publicAppIds = tuple.getT1();
8891
Set<String> templateAppIds = tuple.getT2();
8992
return collectMap(union(publicAppIds, templateAppIds), identity(), this::getAnonymousUserPermission);

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

+6-6
Original file line numberDiff line numberDiff line change
@@ -224,18 +224,18 @@ private Mono<Void> checkApplicationStatus(Application application, ApplicationSt
224224
}
225225

226226
private Mono<Void> checkApplicationViewRequest(Application application, ApplicationRequestType expected) {
227-
// TODO: The check is correct ( logically ) but we need to provide some time for the users to adapt. Will bring it back in the next release
228227

229-
// Falk: switched && application.isPublicToAll() on again - seems here is the bug.
230-
if (expected == ApplicationRequestType.PUBLIC_TO_ALL && application.isPublicToAll()) {
228+
// TODO: check application.isPublicToAll() from v2.4.0
229+
if (expected == ApplicationRequestType.PUBLIC_TO_ALL) {
231230
return Mono.empty();
232231
}
233232

234233
// Falk: here is to check the ENV Variable LOWCODER_MARKETPLACE_PRIVATE_MODE
235234
// isPublicToMarketplace & isPublicToAll must be both true
236-
if (expected == ApplicationRequestType.PUBLIC_TO_MARKETPLACE && application.isPublicToMarketplace() && application.isPublicToAll()) {
237-
return Mono.empty();
238-
}
235+
if (expected == ApplicationRequestType.PUBLIC_TO_MARKETPLACE && application.isPublicToMarketplace() && application.isPublicToAll()) {
236+
return Mono.empty();
237+
}
238+
239239
//
240240
// Falk: application.agencyProfile() & isPublicToAll must be both true
241241
if (expected == ApplicationRequestType.AGENCY_PROFILE && application.agencyProfile() && application.isPublicToAll()) {

0 commit comments

Comments
 (0)