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

Commit bd02de0

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

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)

AltStyle によって変換されたページ (->オリジナル) /