Skip to content

Commit ddcb07c

Browse files
authored
Merge pull request #1730 from lowcoder-org/fix/anon_visit
When an anonymous user visits a published app, a log entry is added to the app_usage_log table.
2 parents a4b22cd + f7f5128 commit ddcb07c

File tree

1 file changed

+36
-44
lines changed

1 file changed

+36
-44
lines changed

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/util/BusinessEventPublisher.java

Lines changed: 36 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,6 @@ public Mono<Void> publishApplicationCommonEvent(ApplicationView originalApplicat
126126
public Mono<Void> publishApplicationCommonEvent(ApplicationView originalApplicationView, ApplicationView applicationView, EventType eventType) {
127127
return sessionUserService.isAnonymousUser()
128128
.flatMap(anonymous -> {
129-
if (anonymous) {
130-
return Mono.empty();
131-
}
132129
return sessionUserService.getVisitorOrgMemberCache()
133130
.zipWith(Mono.defer(() -> {
134131
String folderId = applicationView.getApplicationInfoView().getFolderId();
@@ -204,50 +201,45 @@ public Mono<Void> publishApplicationCommonEvent(ApplicationView originalApplicat
204201
});
205202
});
206203
}
207-
204+
208205

209206
public Mono<Void> publishApplicationPermissionEvent(String applicationId, Set<String> userIds, Set<String> groupIds, String permissionId, String role) {
210207
return sessionUserService.isAnonymousUser()
211-
.flatMap(anonymous -> {
212-
if (anonymous) {
213-
return Mono.empty();
214-
}
215-
return sessionUserService.getVisitorOrgMemberCache()
216-
.zipWith(sessionUserService.getVisitorToken())
217-
.zipWith(applicationService.findById(applicationId)
218-
.zipWhen(application -> application.getCategory(applicationRecordServiceImpl))
219-
.zipWhen(application -> application.getT1().getDescription(applicationRecordServiceImpl)))
220-
.flatMap(tuple -> {
221-
OrgMember orgMember = tuple.getT1().getT1();
222-
String token = tuple.getT1().getT2();
223-
String category = tuple.getT2().getT1().getT2();
224-
String description = tuple.getT2().getT2();
225-
Application application = tuple.getT2().getT1().getT1();
226-
227-
ApplicationCommonEvent event = ApplicationCommonEvent.builder()
228-
.orgId(orgMember.getOrgId())
229-
.userId(orgMember.getUserId())
230-
.applicationId(application.getId())
231-
.applicationGid(application.getGid())
232-
.applicationName(application.getName())
233-
.applicationCategory(category)
234-
.applicationDescription(description)
235-
.type(EventType.APPLICATION_PERMISSION_CHANGE)
236-
.permissionId(permissionId)
237-
.role(role)
238-
.userIds(userIds)
239-
.groupIds(groupIds)
240-
.isAnonymous(anonymous)
241-
.sessionHash(Hashing.sha512().hashString(token, StandardCharsets.UTF_8).toString())
242-
.build();
243-
244-
return Mono.deferContextual(contextView -> {
245-
event.populateDetails(contextView);
246-
applicationEventPublisher.publishEvent(event);
247-
return Mono.empty();
248-
}).then(); // **Fix: Ensures Mono<Void> is returned**
249-
});
250-
})
208+
.flatMap(anonymous -> sessionUserService.getVisitorOrgMemberCache()
209+
.zipWith(sessionUserService.getVisitorToken())
210+
.zipWith(applicationService.findById(applicationId)
211+
.zipWhen(application -> application.getCategory(applicationRecordServiceImpl))
212+
.zipWhen(application -> application.getT1().getDescription(applicationRecordServiceImpl)))
213+
.flatMap(tuple -> {
214+
OrgMember orgMember = tuple.getT1().getT1();
215+
String token = tuple.getT1().getT2();
216+
String category = tuple.getT2().getT1().getT2();
217+
String description = tuple.getT2().getT2();
218+
Application application = tuple.getT2().getT1().getT1();
219+
220+
ApplicationCommonEvent event = ApplicationCommonEvent.builder()
221+
.orgId(orgMember.getOrgId())
222+
.userId(orgMember.getUserId())
223+
.applicationId(application.getId())
224+
.applicationGid(application.getGid())
225+
.applicationName(application.getName())
226+
.applicationCategory(category)
227+
.applicationDescription(description)
228+
.type(EventType.APPLICATION_PERMISSION_CHANGE)
229+
.permissionId(permissionId)
230+
.role(role)
231+
.userIds(userIds)
232+
.groupIds(groupIds)
233+
.isAnonymous(anonymous)
234+
.sessionHash(Hashing.sha512().hashString(token, StandardCharsets.UTF_8).toString())
235+
.build();
236+
237+
return Mono.deferContextual(contextView -> {
238+
event.populateDetails(contextView);
239+
applicationEventPublisher.publishEvent(event);
240+
return Mono.empty();
241+
}).then(); // **Fix: Ensures Mono<Void> is returned**
242+
}))
251243
.onErrorResume(throwable -> {
252244
log.error("publishApplicationPermissionEvent error. {}, {}, {}", applicationId, permissionId, role, throwable);
253245
return Mono.empty();

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