Skip to content

Commit d63cc45

Browse files
authored
[FIX] 기본 이미지 설정 및 게시글 수정 보완
2 parents ce79356 + 6212480 commit d63cc45

5 files changed

Lines changed: 67 additions & 29 deletions

File tree

src/main/java/com/example/FixLog/config/WebConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class WebConfig implements WebMvcConfigurer {
1010
@Override
1111
public void addCorsMappings(CorsRegistry registry) {
1212
registry.addMapping("/**") // 모든 경로에 대해
13-
.allowedOriginPatterns("https://fixlog.netlify.app", "http://localhost:3000") // 모든 도메인 허용 (개발용) → 배포 시 정확한 프론트 주소로 수정 권장
13+
.allowedOriginPatterns("*") // 모든 도메인 허용 (개발용) → 배포 시 정확한 프론트 주소로 수정 권장
1414
.allowedMethods("GET", "POST", "PUT", "DELETE", "PATCH", "OPTIONS")
1515
.allowedHeaders("*")
1616
.allowCredentials(true); // 인증정보(쿠키, Authorization) 허용

src/main/java/com/example/FixLog/dto/post/MyPostPageResponseDto.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,19 @@ public class MyPostPageResponseDto {
2525
private String nickname;
2626
private String profileImageUrl;;
2727

28-
public static String getDefaultImage(String image) {
29-
return (image == null || image.isBlank())
30-
? "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png"
31-
: image;
28+
// 이미지 null일 때 default 사진으로 변경 - 프로필 사진
29+
public static String getDefaultProfile(String image){
30+
String imageUrl = (image == null || image.isBlank())
31+
? "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png" : image;
32+
System.out.println(imageUrl);
33+
return imageUrl;
34+
}
35+
// 이미지 null일 때 default 사진으로 변경 - 썸네일
36+
public static String getDefaultCover(String image){
37+
String imageUrl = (image == null || image.isBlank())
38+
? "https://fixlogsmwubucket.s3.ap-northeast-2.amazonaws.com/default/DefaulThumnail.png" : image;
39+
System.out.println(imageUrl);
40+
return imageUrl;
3241
}
3342

3443
public static MyPostPageResponseDto from(Post post, int forkCount) {
@@ -37,8 +46,8 @@ public static MyPostPageResponseDto from(Post post, int forkCount) {
3746
.nickname(post.getUserId().getNickname())
3847
.postTitle(post.getPostTitle())
3948
.postSummary(generateSummary(post.getProblem()))
40-
.imageUrl(getDefaultImage(post.getCoverImage()))
41-
.profileImageUrl(getDefaultImage(post.getUserId().getProfileImageUrl()))
49+
.imageUrl(getDefaultCover(post.getCoverImage()))
50+
.profileImageUrl(getDefaultProfile(post.getUserId().getProfileImageUrl()))
4251
.tags(post.getPostTags().stream().map(tag -> tag.getTagId().getTagName()).toList())
4352
.createdAt(post.getCreatedAt())
4453
.likeCount(post.getPostLikes().size())

src/main/java/com/example/FixLog/exception/ErrorCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public enum ErrorCode {
2424
TAG_NOT_FOUND(HttpStatus.NOT_FOUND, "없는 태그 번호입니다."),
2525
SORT_NOT_EXIST(HttpStatus.BAD_REQUEST, "사용할 수 없는 정렬입니다."),
2626
INVALID_PASSWORD(HttpStatus.UNAUTHORIZED, "비밀번호가 일치하지 않습니다."),
27+
POST_UPDATE_FORBIDDEN(HttpStatus.BAD_REQUEST, "본인 게시글만 수정할 수 있습니다."),
2728
REQUIRED_TAGS_MISSING(HttpStatus.BAD_REQUEST, "태그를 선택해주세요."),
2829
REQUIRED_CONTENT_MISSING(HttpStatus.BAD_REQUEST, "필수 본문이 입력되지 않았습니다."),
2930
SAME_AS_OLD_PASSWORD(HttpStatus.BAD_REQUEST, "다른 비밀번호 입력 바랍니다."),

src/main/java/com/example/FixLog/service/MainPageService.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,20 @@ public MainPageService(PostRepository postRepository, MemberService memberServic
2727
this.memberService = memberService;
2828
}
2929

30-
// 이미지 null일 때 default 사진으로 변경 (프로필 사진,
31-
public String getDefaultImage(String image){
30+
// 이미지 null일 때 default 사진으로 변경 - 프로필 사진
31+
public String getDefaultProfile(String image){
3232
String imageUrl = (image == null || image.isBlank())
3333
? "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png" : image;
3434
System.out.println(imageUrl);
3535
return imageUrl;
3636
}
37+
// 이미지 null일 때 default 사진으로 변경 - 썸네일
38+
public String getDefaultCover(String image){
39+
String imageUrl = (image == null || image.isBlank())
40+
? "https://fixlogsmwubucket.s3.ap-northeast-2.amazonaws.com/default/DefaulThumnail.png" : image;
41+
System.out.println(imageUrl);
42+
return imageUrl;
43+
}
3744

3845
// 메인페이지 보기
3946
public MainPageResponseDto mainPageView(int sort, int size){
@@ -44,9 +51,9 @@ public MainPageResponseDto mainPageView(int sort, int size){
4451
if (optionalMember.isPresent()) {
4552
Member member = optionalMember.get();
4653
String imageUrl = member.getProfileImageUrl();
47-
profileImageUrl = getDefaultImage(imageUrl);
54+
profileImageUrl = getDefaultProfile(imageUrl);
4855
} else {
49-
profileImageUrl = "https://example.com/default-cover-image.png"; // 비로그인 기본 이미지
56+
profileImageUrl = "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png"; // 비로그인 기본 이미지
5057
}
5158

5259
// 페이지 (글 12개) 불러오기
@@ -67,11 +74,11 @@ public MainPageResponseDto mainPageView(int sort, int size){
6774
List<MainPagePostResponseDto> postList = posts.stream()
6875
.map(post -> new MainPagePostResponseDto(
6976
post.getPostTitle(),
70-
getDefaultImage(post.getCoverImage()),
77+
getDefaultCover(post.getCoverImage()),
7178
post.getPostTags().stream()
7279
.map(postTag -> postTag.getTagId().getTagName())
7380
.collect(Collectors.toList()),
74-
getDefaultImage(post.getUserId().getProfileImageUrl()),
81+
getDefaultProfile(post.getUserId().getProfileImageUrl()),
7582
post.getUserId().getNickname(),
7683
post.getCreatedAt().toLocalDate(),
7784
post.getPostLikes().size()
@@ -90,9 +97,9 @@ public MainPageResponseDto mainPageFullView(int sort, int page, int size){
9097
if (optionalMember.isPresent()) {
9198
Member member = optionalMember.get();
9299
String imageUrl = member.getProfileImageUrl();
93-
profileImageUrl = getDefaultImage(imageUrl);
100+
profileImageUrl = getDefaultProfile(imageUrl);
94101
} else {
95-
profileImageUrl = "https://example.com/default-cover-image.png"; // 비로그인 기본 이미지
102+
profileImageUrl = "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png"; // 비로그인 기본 이미지
96103
}
97104

98105
// 페이지 설정 (한 페이지당 12개)
@@ -109,11 +116,11 @@ public MainPageResponseDto mainPageFullView(int sort, int page, int size){
109116
List<MainPagePostResponseDto> postList = postPage.stream()
110117
.map(post -> new MainPagePostResponseDto(
111118
post.getPostTitle(),
112-
getDefaultImage(post.getCoverImage()),
119+
getDefaultCover(post.getCoverImage()),
113120
post.getPostTags().stream()
114121
.map(postTag -> postTag.getTagId().getTagName())
115122
.collect(Collectors.toList()),
116-
getDefaultImage(post.getUserId().getProfileImageUrl()),
123+
getDefaultProfile(post.getUserId().getProfileImageUrl()),
117124
post.getUserId().getNickname(),
118125
post.getCreatedAt().toLocalDate(),
119126
post.getPostLikes().size()

src/main/java/com/example/FixLog/service/PostService.java

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
import com.example.FixLog.repository.post.PostRepository;
2121
import com.example.FixLog.repository.tag.TagRepository;
2222
import jakarta.transaction.Transactional;
23-
import org.springframework.security.core.Authentication;
2423
import org.springframework.security.core.context.SecurityContextHolder;
2524
import org.springframework.stereotype.Service;
25+
import org.springframework.util.StringUtils;
2626
import org.springframework.web.multipart.MultipartFile;
2727

2828
import java.time.LocalDate;
@@ -55,13 +55,20 @@ public PostService(PostRepository postRepository, PostLikeRepository postLikeRep
5555
this.s3Service = s3Service;
5656
}
5757

58-
// 이미지 null일 때 default 사진으로 변경 (프로필 사진,
59-
public String getDefaultImage(String image){
58+
// 이미지 null일 때 default 사진으로 변경 - 프로필 사진
59+
public String getDefaultProfile(String image){
6060
String imageUrl = (image == null || image.isBlank())
6161
? "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png" : image;
6262
System.out.println(imageUrl);
6363
return imageUrl;
6464
}
65+
// 이미지 null일 때 default 사진으로 변경 - 썸네일
66+
public String getDefaultCover(String image){
67+
String imageUrl = (image == null || image.isBlank())
68+
? "https://fixlogsmwubucket.s3.ap-northeast-2.amazonaws.com/default/DefaulThumnail.png" : image;
69+
System.out.println(imageUrl);
70+
return imageUrl;
71+
}
6572

6673
// 게시글 작성하기
6774
@Transactional
@@ -144,15 +151,21 @@ else if (categories.size() > 1)
144151

145152
// 게시글 필수 항목 다 작성했는지
146153
private void validatePost(PostRequestDto postRequestDto){
147-
if (postRequestDto.getPostTitle().isBlank() | postRequestDto.getProblem().isBlank()
148-
| postRequestDto.getErrorMessage().isBlank() | postRequestDto.getEnvironment().isBlank()
149-
| postRequestDto.getReproduceCode().isBlank() | postRequestDto.getSolutionCode().isBlank())
154+
if (!StringUtils.hasText(postRequestDto.getPostTitle())
155+
|| !StringUtils.hasText(postRequestDto.getProblem())
156+
|| !StringUtils.hasText(postRequestDto.getErrorMessage())
157+
|| !StringUtils.hasText(postRequestDto.getEnvironment())
158+
|| !StringUtils.hasText(postRequestDto.getReproduceCode())
159+
|| !StringUtils.hasText(postRequestDto.getSolutionCode()))
150160
throw new CustomException(ErrorCode.REQUIRED_CONTENT_MISSING);
151161
}
152162
private void validatePost(NewPostRequestDto newPostRequestDto){
153-
if (newPostRequestDto.getPostTitle().isBlank() | newPostRequestDto.getProblem().isBlank()
154-
| newPostRequestDto.getErrorMessage().isBlank() | newPostRequestDto.getEnvironment().isBlank()
155-
| newPostRequestDto.getReproduceCode().isBlank() | newPostRequestDto.getSolutionCode().isBlank())
163+
if (!StringUtils.hasText(newPostRequestDto.getPostTitle())
164+
|| !StringUtils.hasText(newPostRequestDto.getProblem())
165+
|| !StringUtils.hasText(newPostRequestDto.getErrorMessage())
166+
|| !StringUtils.hasText(newPostRequestDto.getEnvironment())
167+
|| !StringUtils.hasText(newPostRequestDto.getReproduceCode())
168+
|| !StringUtils.hasText(newPostRequestDto.getSolutionCode()))
156169
throw new CustomException(ErrorCode.REQUIRED_CONTENT_MISSING);
157170
}
158171

@@ -169,12 +182,18 @@ public String uploadImage(MultipartFile imageFile){
169182
return "![image](" + imageUrl + ")";
170183
}
171184

185+
// 게시글 수정하기
172186
@Transactional
173187
public void editPost(Long postId, NewPostRequestDto newPostRequestDto) {
174188
Member member = memberService.getCurrentMemberInfo();
175189
Post post = postRepository.findById(postId)
176190
.orElseThrow(() -> new CustomException(ErrorCode.POST_NOT_FOUND));
177191

192+
// 게시글 작성자가 본인이 맞는지
193+
if (!member.getUserId().equals(post.getUserId().getUserId())) {
194+
throw new CustomException(ErrorCode.POST_UPDATE_FORBIDDEN);
195+
}
196+
178197
// 북마크 카테고리별로 선택 제한 두기
179198
List<Tag> tags = fetchAndValidateTags(newPostRequestDto.getTags());
180199

@@ -194,6 +213,8 @@ & compareTags(post.getPostTags(), tags)){
194213
}
195214

196215
// 필드 업데이트
216+
validatePost(newPostRequestDto);
217+
197218
post.changeTitle(newPostRequestDto.getPostTitle());
198219
post.changeCoverImage(newPostRequestDto.getCoverImageUrl());
199220
post.changeProblem(newPostRequestDto.getProblem());
@@ -233,7 +254,7 @@ public PostResponseDto viewPost(Long postId){
233254
currentPost.getUserId().getUserId(),
234255
currentPost.getUserId().getNickname(),
235256
currentPost.getPostTitle(),
236-
getDefaultImage(currentPost.getCoverImage()),
257+
getDefaultCover(currentPost.getCoverImage()),
237258
currentPost.getProblem(),
238259
currentPost.getErrorMessage(),
239260
currentPost.getEnvironment(),
@@ -253,15 +274,15 @@ public PostResponseDto viewPost(Long postId){
253274
Member member = optionalMember.get();
254275
nickname = member.getNickname();
255276
String imageUrl = member.getProfileImageUrl();
256-
profileImageUrl = getDefaultImage(imageUrl);
277+
profileImageUrl = getDefaultProfile(imageUrl);
257278

258279
isLiked = currentPost.getPostLikes().stream()
259280
.anyMatch(postLike -> postLike.getUserId().equals(member));
260281
isMarked = currentPost.getBookmarks().stream()
261282
.anyMatch(bookmark -> bookmark.getFolderId().getUserId().equals(member));
262283
} else {
263284
nickname = "로그인하지 않았습니다.";
264-
profileImageUrl = "https://example.com/default-cover-image.png"; // 비로그인 기본 이미지
285+
profileImageUrl = "https://fixlog-bucket.s3.ap-northeast-2.amazonaws.com/default/profile.png"; // 비로그인 기본 이미지
265286
isLiked = false;
266287
isMarked = false;
267288
}

0 commit comments

Comments
 (0)