diff options
Diffstat (limited to 'src/main/java')
4 files changed, 38 insertions, 4 deletions
diff --git a/src/main/java/com/blog/web/dto/ArticleDto.java b/src/main/java/com/blog/web/dto/ArticleDto.java index 0c48f62..232fa3c 100644 --- a/src/main/java/com/blog/web/dto/ArticleDto.java +++ b/src/main/java/com/blog/web/dto/ArticleDto.java @@ -1,8 +1,7 @@ package com.blog.web.dto; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import com.blog.web.models.UserEntity; +import jakarta.persistence.*; import jakarta.validation.constraints.NotEmpty; import lombok.Builder; import lombok.Data; @@ -29,4 +28,7 @@ public class ArticleDto { private LocalDateTime createdOn; @UpdateTimestamp private LocalDateTime updatedOn; + @ManyToOne + @JoinColumn(name = "created_by", nullable = false) + private UserEntity createdBy; } diff --git a/src/main/java/com/blog/web/models/Article.java b/src/main/java/com/blog/web/models/Article.java index 5d4566f..049b04c 100644 --- a/src/main/java/com/blog/web/models/Article.java +++ b/src/main/java/com/blog/web/models/Article.java @@ -27,4 +27,7 @@ public class Article { private LocalDateTime createdOn; @UpdateTimestamp private LocalDateTime updatedOn; + @ManyToOne + @JoinColumn(name = "created_by", nullable = false) + private UserEntity createdBy; } diff --git a/src/main/java/com/blog/web/security/SecurityUtil.java b/src/main/java/com/blog/web/security/SecurityUtil.java new file mode 100644 index 0000000..6e8a5b0 --- /dev/null +++ b/src/main/java/com/blog/web/security/SecurityUtil.java @@ -0,0 +1,16 @@ +package com.blog.web.security; + +import org.springframework.security.authentication.AnonymousAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +public class SecurityUtil { + public static String getSessionUser() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if(!(authentication instanceof AnonymousAuthenticationToken)) { + String currentUsername = authentication.getName(); + return currentUsername; + } + return null; + } +} diff --git a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java index c8e2903..6fdbe3f 100644 --- a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java +++ b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java @@ -2,7 +2,10 @@ package com.blog.web.services.impl; import com.blog.web.dto.ArticleDto; import com.blog.web.models.Article; +import com.blog.web.models.UserEntity; import com.blog.web.repository.ArticleRepository; +import com.blog.web.repository.UserRepository; +import com.blog.web.security.SecurityUtil; import com.blog.web.services.ArticleService; import org.springframework.stereotype.Service; @@ -11,11 +14,13 @@ import java.util.stream.Collectors; @Service public class ArticleServiceImpl implements ArticleService { - public ArticleServiceImpl(com.blog.web.repository.ArticleRepository articleRepository) { + public ArticleServiceImpl(com.blog.web.repository.ArticleRepository articleRepository, com.blog.web.repository.UserRepository userRepository) { + this.userRepository = userRepository; this.articleRepository = articleRepository; } private ArticleRepository articleRepository; + private UserRepository userRepository; @Override public List<ArticleDto> findAllArticles() { @@ -25,7 +30,10 @@ public class ArticleServiceImpl implements ArticleService { @Override public Article saveArticle(ArticleDto articleDto) { + String username = SecurityUtil.getSessionUser(); + UserEntity user = userRepository.findByUsername(username); Article article = mapToArticle(articleDto); + article.setCreatedBy(user); return articleRepository.save(article); } @@ -37,7 +45,10 @@ public class ArticleServiceImpl implements ArticleService { @Override public void updateArticle(ArticleDto articleDto) { + String username = SecurityUtil.getSessionUser(); + UserEntity user = userRepository.findByUsername(username); Article article = mapToArticle(articleDto); + article.setCreatedBy(user); articleRepository.save(article); } @@ -58,6 +69,7 @@ public class ArticleServiceImpl implements ArticleService { .title(articleDto.getTitle()) .photoUrl(articleDto.getPhotoUrl()) .content(articleDto.getContent()) + .createdBy(articleDto.getCreatedBy()) .createdOn(articleDto.getCreatedOn()) .updatedOn(articleDto.getUpdatedOn()) .build(); @@ -70,6 +82,7 @@ public class ArticleServiceImpl implements ArticleService { .title(article.getTitle()) .photoUrl(article.getPhotoUrl()) .content(article.getContent()) + .createdBy(article.getCreatedBy()) .createdOn(article.getCreatedOn()) .updatedOn(article.getUpdatedOn()) .build(); |
