From 66801ba91a51c9b7df6d85136d677350d2495b86 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Tue, 18 Apr 2023 13:36:37 +0300 Subject: ActivityPub compatibility with private posts --- src/main/java/com/juick/www/api/Messages.java | 4 ++++ src/main/java/com/juick/www/api/activity/Profile.java | 4 ++++ 2 files changed, 8 insertions(+) (limited to 'src/main/java/com/juick/www') diff --git a/src/main/java/com/juick/www/api/Messages.java b/src/main/java/com/juick/www/api/Messages.java index f059aa88..d127d166 100644 --- a/src/main/java/com/juick/www/api/Messages.java +++ b/src/main/java/com/juick/www/api/Messages.java @@ -20,6 +20,7 @@ package com.juick.www.api; import com.juick.model.Message; import com.juick.model.Tag; import com.juick.model.User; +import com.juick.service.activities.UpdateEvent; import com.juick.util.WebUtils; import com.juick.www.WebApp; import com.juick.model.CommandResult; @@ -208,6 +209,9 @@ public class Messages { if (visitor.isPremium() || userService.isAdminUser(visitor)) { var msg = messagesService.getMessage(mid).orElseThrow(HttpNotFoundException::new); messagesService.setFriendsOnly(mid, !msg.FriendsOnly); + msg = messagesService.getMessage(mid).orElseThrow(HttpNotFoundException::new); + applicationEventPublisher.publishEvent( + new UpdateEvent(this, visitor, msg)); } else { throw new HttpBadRequestException(); } diff --git a/src/main/java/com/juick/www/api/activity/Profile.java b/src/main/java/com/juick/www/api/activity/Profile.java index f37ef6ff..68ea66ae 100644 --- a/src/main/java/com/juick/www/api/activity/Profile.java +++ b/src/main/java/com/juick/www/api/activity/Profile.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.juick.model.Message; import com.juick.model.User; +import com.juick.util.HttpForbiddenException; import com.juick.util.formatters.PlainTextFormatter; import com.juick.model.CommandResult; import com.juick.ActivityPubManager; @@ -258,6 +259,9 @@ public class Profile { Context.ACTIVITYSTREAMS_PROFILE_MEDIA_TYPE, MediaType.APPLICATION_JSON_VALUE }) public Context showNote(@PathVariable int mid, @PathVariable int rid) { var message = activityPubManager.findMessage(mid, rid); + if (!messagesService.canViewThread(mid, 0)) { + throw new HttpForbiddenException(); + } if (message != null) { return Context.build(activityPubManager.makeNote(message)); } -- cgit v1.2.3