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

Lines changed: 1 addition & 12 deletions
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

Lines changed: 22 additions & 2 deletions
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

Lines changed: 7 additions & 4 deletions
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

Lines changed: 6 additions & 6 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy