Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -477,4 +477,70 @@ public BaseResponse<Void> updatePost(

return BaseResponse.onSuccess(null);
}

@PatchMapping("/{postId}/public")
@Operation(summary = "게시글 나만 보기 수정 API", description = "인증된 유저의 게시글 나만 보기 수정 API.")
@ApiResponses({
@ApiResponse(responseCode = "COMMON200", description = "게시글 수정 성공"),
@ApiResponse(
responseCode = "COMMON401",
description = "로그인을 하지 않았을 경우",
content = @Content(
mediaType = "application/json",
examples = @ExampleObject(
value = """
{
"timestamp": "2025-01-26T21:23:51.4515304",
"code": "COMMON401",
"message": "인증이 필요합니다."
}
"""
)
)
),
@ApiResponse(
responseCode = "POST403",
description = "작성자가 아닌 유저의 요청으로 권한이 없는 경우",
content = @Content(
mediaType = "application/json",
examples = @ExampleObject(
value = """
{
"timestamp": "2025-01-27T20:56:55.7942672",
"code": "POST403",
"message": "해당 게시글에 대한 권한이 없습니다."
}
"""
)
)
),
@ApiResponse(
responseCode = "POST404",
description = "해당 게시물을 찾을 수 없습니다.",
content = @Content(
mediaType = "application/json",
examples = @ExampleObject(
value = """
{
"timestamp": "2024-01-13T10:00:00",
"isSuccess": "false",
"code": "POST404",
"message": "해당 게시물을 찾을 수 없습니다."
}
"""
)
)
)
})
@Parameters({
@Parameter(name = "postId", description = "게시글 아이디, path variable 입니다")
})
public BaseResponse<Void> updatePostIsPublic(
@PathVariable(name = "postId") Long postId,
@AuthenticationPrincipal CustomUserDetails customUserDetails) {

postCommandService.togglePostPublic(customUserDetails.getMember(), postId);
return BaseResponse.onSuccess(null);
}

}
4 changes: 4 additions & 0 deletions src/main/java/com/example/mody/domain/post/entity/Post.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,8 @@ public void updatePost(String content, boolean isPublic) {
this.content = content;
this.isPublic = isPublic;
}

public void toggleIsPublic() {
this.isPublic = !isPublic;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public PostListResponse getPostList(Optional<Post> cursorPost, Integer size, Mem
.from(qPost)
.leftJoin(qPost.member, qMember)
.leftJoin(qPost.images, qPostImage)
.leftJoin(qMemberPostLike).on(qMemberPostLike.post.eq(qPost))
.leftJoin(qMemberPostLike).on(qMemberPostLike.post.eq(qPost).and(qMemberPostLike.member.eq(member)))
.where(qPost.id.in(postIds))
.orderBy(orderSpecifiers.toArray(new OrderSpecifier[0]))
.transform(GroupBy.groupBy(qPost.id).as(
Expand All @@ -96,7 +96,7 @@ public PostListResponse getPostList(Optional<Post> cursorPost, Integer size, Mem
qPost.content,
qPost.isPublic,
qPost.likeCount,
isLiked,
qMemberPostLike.isNotNull(),
qPost.bodyType.name,
GroupBy.list(qPostImage)
)));
Expand Down Expand Up @@ -184,7 +184,7 @@ public PostListResponse getMyPosts(Long cursor, Integer size, Member member) {
.from(qPost)
.leftJoin(qPost.member, qMember)
.leftJoin(qPost.images, qPostImage)
.leftJoin(qMemberPostLike).on(qMemberPostLike.post.eq(qPost))
.leftJoin(qMemberPostLike).on(qMemberPostLike.post.eq(qPost).and(qMemberPostLike.member.eq(member)))
.where(qPost.id.in(postIds))
.orderBy( qPost.createdAt.desc())
.transform(GroupBy.groupBy(qPost.id).as(
Expand All @@ -195,7 +195,7 @@ public PostListResponse getMyPosts(Long cursor, Integer size, Member member) {
qPost.content,
qPost.isPublic,
qPost.likeCount,
isLikedResult(member),
qMemberPostLike.isNotNull(),
qPost.bodyType.name,
GroupBy.list(qPostImage)
)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ public interface PostCommandService {

public void reportPost(Member member, Long postId);
public void updatePost(PostUpdateRequest request, Long postId, Member member);

void togglePostPublic(Member member, Long postId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,16 @@ public void updatePost(PostUpdateRequest request, Long postId, Member member){
post.updatePost(request.getContent(), request.getIsPublic());
}

@Override
public void togglePostPublic(Member member, Long postId) {

Post post = postRepository.findById(postId)
.orElseThrow(() -> new PostException(POST_NOT_FOUND));
checkAuthorization(member, post);
post.toggleIsPublic();
}


@Transactional
protected void delete(Post post) {
List<String> postImageUrls = postImageRepository.findPostImageUrlByPostId(post.getId());
Expand Down
13 changes: 7 additions & 6 deletions src/main/java/com/example/mody/global/config/CorsMvcConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ public class CorsMvcConfig implements WebMvcConfigurer {
public void addCorsMappings(CorsRegistry corsRegistry) {
corsRegistry.addMapping("/**")
.exposedHeaders("Set-Cookie")
.allowedOrigins(
"http://localhost:5173", // 현재 요청 URL
"https://kkoalla.app",
"https://kkoalla.app:5173",
"https://kkoalla.app:8443"
)
.allowedOriginPatterns("*")
// .allowedOrigins(
// "http://localhost:5173", // 현재 요청 URL
// "https://kkoalla.app",
// "https://kkoalla.app:5173",
// "https://kkoalla.app:8443"
// )
.allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS")
.allowedHeaders("*")
.allowCredentials(true);
Expand Down