|
7 | 7 | import java.util.stream.Collectors;
|
8 | 8 |
|
9 | 9 | import org.lowcoder.domain.application.model.Application;
|
| 10 | +import org.lowcoder.domain.application.model.ApplicationRequestType; |
10 | 11 | import org.lowcoder.domain.application.model.ApplicationStatus;
|
11 | 12 | import org.lowcoder.domain.application.repository.ApplicationRepository;
|
12 | 13 | import org.lowcoder.domain.permission.model.ResourceRole;
|
@@ -157,8 +158,6 @@ public Mono<Boolean> setApplicationPublicToMarketplace(String applicationId, Boo
|
157 | 158 |
|
158 | 159 | return findById(applicationId)
|
159 | 160 |
|
160 |
| - // Falk: question - do we need Map<String, Object> applicationDsl = application.getEditingApplicationDSL(); and .editingApplicationDSL(applicationDsl) - or is .publicToMarketplace(publicToMarketplace).build(); enough? |
161 |
| - |
162 | 161 | .map(application -> {
|
163 | 162 |
|
164 | 163 | Map<String, Object> applicationDsl = application.getEditingApplicationDSL();
|
@@ -204,81 +203,64 @@ public Mono<Boolean> setApplicationAsAgencyProfile(String applicationId, boolean
|
204 | 203 | return mongoUpsertHelper.updateById(application, applicationId);
|
205 | 204 | }
|
206 | 205 |
|
207 |
| - // getPublicApplicationIds /view - publicToAll check |
208 |
| - // getPublicMarketplaceApplicationIds / marketplace_view - publicToAll and publicToMarketplace check & isPrivateMarketplace check |
209 |
| - // getPublicAgencyProfileApplicationIds / agency_profile_view - publicToAll and agencyProfile check |
210 | 206 |
|
211 |
| - // marketplace_view [anonymous] publicToAll and publicToMarketplace check & isPrivateMarketplace false -> OK |
| 207 | + @NonEmptyMono |
| 208 | + @SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform") |
| 209 | + public Mono<Set<String>> getFilteredPublicApplicationIds(ApplicationRequestType requestType, Collection<String> applicationIds, Boolean isAnonymous, Boolean isPrivateMarketplace) { |
| 210 | + |
| 211 | + switch(requestType) |
| 212 | + { |
| 213 | + case PUBLIC_TO_ALL: |
| 214 | + return getPublicApplicationIds(applicationIds); |
| 215 | + case PUBLIC_TO_MARKETPLACE: |
| 216 | + return getPublicMarketplaceApplicationIds(applicationIds, isAnonymous, isPrivateMarketplace); |
| 217 | + case AGENCY_PROFILE: |
| 218 | + return getPublicAgencyApplicationIds(applicationIds); |
| 219 | + default: |
| 220 | + return Mono.empty(); |
| 221 | + } |
| 222 | + } |
212 | 223 |
|
213 |
| - // marketplace_view [anonymous] publicToAll and publicToMarketplace check & isPrivateMarketplace true -> NOT OK |
214 |
| - |
215 |
| - // marketplace_view [LoggedIn] publicToAll and publicToMarketplace check & isPrivateMarketplace true -> OK |
216 |
| - // marketplace_view [LoggedIn] publicToAll and publicToMarketplace check & isPrivateMarketplace false -> OK |
217 |
| - |
218 |
| - |
219 |
| - // will be extended by EndpointType |
220 |
| - /* |
221 |
| - * if (EndpointType == view) |
222 |
| - * if (EndpointType == marketplace_view) |
223 |
| - * if (EndpointType == agency_profile_view) |
| 224 | + |
| 225 | + /** |
| 226 | + * Find all public applications - doesn't matter if user is anonymous, because these apps are public |
224 | 227 | */
|
225 |
| - |
226 |
| - // is it needed? |
227 | 228 | @NonEmptyMono
|
228 | 229 | @SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
|
229 |
| - public Mono<Set<String>> getPublicApplicationIds(Collection<String> applicationIds, Boolean isAnonymous, Boolean isPrivateMarketplace) { |
| 230 | + public Mono<Set<String>> getPublicApplicationIds(Collection<String> applicationIds) { |
230 | 231 |
|
231 |
| - return repository.findByPublicToAllIsTrue() |
| 232 | + return repository.findByPublicToAllIsTrueAndIdIn(applicationIds) |
232 | 233 | .map(HasIdAndAuditing::getId)
|
233 | 234 | .collect(Collectors.toSet());
|
234 | 235 | }
|
235 | 236 |
|
236 |
| - // for Marketplaces |
| 237 | + |
| 238 | + /** |
| 239 | + * Find all marketplace applications - filter based on whether user is anonymous and whether it's a private marketplace |
| 240 | + */ |
237 | 241 | @NonEmptyMono
|
238 | 242 | @SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
|
239 |
| - public Mono<Set<String>> getPublicMarketplaceApplicationIds(Collection<String> applicationIds, Boolean isAnonymous, Boolean isPrivateMarketplace) { |
240 |
| - |
241 |
| - if(isAnonymous) { |
242 |
| - if(isPrivateMarketplace) { |
243 |
| - return repository.findByPublicToAllIsTrueAndPublicToMarketplaceIsTrue(false, false, applicationIds) |
244 |
| - .map(HasIdAndAuditing::getId) |
245 |
| - .collect(Collectors.toSet()); |
246 |
| - } else { |
247 |
| - return repository.findByPublicToAllIsTrueAndPublicToMarketplaceIsTrue(true, false, applicationIds) |
248 |
| - .map(HasIdAndAuditing::getId) |
249 |
| - .collect(Collectors.toSet()); |
250 |
| - } |
251 |
| - } else { |
252 |
| - return repository.findByPublicToAllIsTrueAndPublicToMarketplaceIsTrue(true, true, applicationIds) |
253 |
| - .map(HasIdAndAuditing::getId) |
254 |
| - .collect(Collectors.toSet()); |
255 |
| - } |
256 |
| - |
257 |
| - |
| 243 | + public Mono<Set<String>> getPublicMarketplaceApplicationIds(Collection<String> applicationIds, boolean isAnonymous, boolean isPrivateMarketplace) { |
| 244 | + |
| 245 | + if ((isAnonymous && !isPrivateMarketplace) || !isAnonymous) |
| 246 | + { |
| 247 | + return repository.findByPublicToAllIsTrueAndPublicToMarketplaceIsTrueAndIdIn(applicationIds) |
| 248 | + .map(HasIdAndAuditing::getId) |
| 249 | + .collect(Collectors.toSet()); |
| 250 | + } |
| 251 | + return Mono.empty(); |
258 | 252 | }
|
259 | 253 |
|
260 |
| - // for Agencies |
| 254 | + /** |
| 255 | + * Find all agency applications |
| 256 | + */ |
261 | 257 | @NonEmptyMono
|
262 | 258 | @SuppressWarnings("ReactiveStreamsNullableInLambdaInTransform")
|
263 |
| - public Mono<Set<String>> getPublicAgencyApplicationIds(Collection<String> applicationIds, Boolean isAnonymous, Boolean isPrivateMarketplace) { |
264 |
| - |
265 |
| - if(isAnonymous) { |
266 |
| - if(isPrivateMarketplace) { |
267 |
| - return repository.findByPublicToAllIsTrueAndPublicToMarketplaceIsAndAgencyProfileIsAndIdIn(false, false, applicationIds) |
268 |
| - .map(HasIdAndAuditing::getId) |
269 |
| - .collect(Collectors.toSet()); |
270 |
| - } else { |
271 |
| - return repository.findByPublicToAllIsTrueAndPublicToMarketplaceIsAndAgencyProfileIsAndIdIn(true, false, applicationIds) |
272 |
| - .map(HasIdAndAuditing::getId) |
273 |
| - .collect(Collectors.toSet()); |
274 |
| - } |
275 |
| - } else { |
276 |
| - return repository.findByPublicToAllIsTrueAndPublicToMarketplaceIsOrAgencyProfileIsAndIdIn(true, true, applicationIds) |
277 |
| - .map(HasIdAndAuditing::getId) |
278 |
| - .collect(Collectors.toSet()); |
279 |
| - } |
280 |
| - |
| 259 | + public Mono<Set<String>> getPublicAgencyApplicationIds(Collection<String> applicationIds) { |
281 | 260 |
|
| 261 | + return repository.findByPublicToAllIsTrueAndAgencyProfileIsTrueAndIdIn(applicationIds) |
| 262 | + .map(HasIdAndAuditing::getId) |
| 263 | + .collect(Collectors.toSet()); |
282 | 264 | }
|
283 | 265 |
|
284 | 266 | public Flux<Application> findAll() {
|
|
0 commit comments