게시물 수정하기
@PutMapping
public ResponseEntity<?> updateArticle(@RequestHeader("Authorization") String accessToken,
@RequestBody ArticleRequestDTO articleRequestDTO){
TokenRecord tokenRecord = this.multiService.checkToken(accessToken);
if(tokenRecord.isOK()){
String username = tokenRecord.username();
ArticleResponseDTO articleResponseDTO = this.multiService.updateArticle(username,articleRequestDTO);
return tokenRecord.getResponseEntity(articleResponseDTO);
}
return tokenRecord.getResponseEntity();
}
@Transactional
public ArticleResponseDTO updateArticle(String username, ArticleRequestDTO articleRequestDTO) {
SiteUser user = userService.get(username);
Article _article = this.articleService.get(articleRequestDTO.getArticleId());
if (!user.getUsername().equals(_article.getAuthor().getUsername()) || !user.getRole().equals(UserRole.ADMIN)) {
throw new IllegalArgumentException("not role");
} else {
Article article = this.articleService.update(_article, articleRequestDTO);
return ArticleResponseDTO.builder()
.article(article)
.siteUser(article.getAuthor())
.build();
}
}
public Article update(Article article, ArticleRequestDTO articleRequestDTO) {
article.setTitle(articleRequestDTO.getTitle());
article.setContent(articleRequestDTO.getContent());
article.setModifyDate(LocalDateTime.now());
return this.articleRepository.save(article);
}