summaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-07-14 00:02:56 -0400
committerrealtradam <[email protected]>2024-07-14 00:02:56 -0400
commit5f87656d7d7421087ba820758968e5ba05a86d45 (patch)
tree7c5a2cdfc7822cc1fac326152a653fc4b7211c19 /src/main/java/com
parent2f91d2067e7da107a83225f063216c0c6dd7b7cc (diff)
downloadspring-blog-5f87656d7d7421087ba820758968e5ba05a86d45.tar.gz
spring-blog-5f87656d7d7421087ba820758968e5ba05a86d45.zip
articles associated with users
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/blog/web/dto/ArticleDto.java8
-rw-r--r--src/main/java/com/blog/web/models/Article.java3
-rw-r--r--src/main/java/com/blog/web/security/SecurityUtil.java16
-rw-r--r--src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java15
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();