summaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2024-07-14 23:43:35 -0400
committerrealtradam <[email protected]>2024-07-14 23:43:35 -0400
commit0081ab9926c486beb3033791e9e8f946b3c8b48a (patch)
treeddd52a3454d630b43946a3271c5fac2880d1f722 /src/main/java/com
parent16aea3767fc42f4baa30f7fc466e7a8851b0ecbb (diff)
downloadspring-blog-0081ab9926c486beb3033791e9e8f946b3c8b48a.tar.gz
spring-blog-0081ab9926c486beb3033791e9e8f946b3c8b48a.zip
add auth for editing and deleting posts
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/blog/web/controllers/ArticleController.java39
-rw-r--r--src/main/java/com/blog/web/mappers/ArticleMapper.java31
-rw-r--r--src/main/java/com/blog/web/security/SecurityConfig.java6
-rw-r--r--src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java30
4 files changed, 69 insertions, 37 deletions
diff --git a/src/main/java/com/blog/web/controllers/ArticleController.java b/src/main/java/com/blog/web/controllers/ArticleController.java
index 9af5b92..d1bfcce 100644
--- a/src/main/java/com/blog/web/controllers/ArticleController.java
+++ b/src/main/java/com/blog/web/controllers/ArticleController.java
@@ -12,7 +12,6 @@ import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
-import java.time.LocalDateTime;
import java.util.List;
@Controller
@@ -27,13 +26,8 @@ public class ArticleController {
@GetMapping("/articles")
public String listArticles(Model model) {
- UserEntity user = new UserEntity();
List<ArticleDto> articles = articleService.findAllArticles();
- String username = SecurityUtil.getSessionUser();
- if(username != null) {
- user = userService.findByUsername(username);
- model.addAttribute("user", user);
- }
+ UserEntity user = getLoggedInUser();
model.addAttribute("user", user);
model.addAttribute("articles", articles);
return "index";
@@ -43,11 +37,15 @@ public class ArticleController {
public String showArticle(@PathVariable("articleId") long articleId, Model model) {
ArticleDto articleDto = articleService.findArticleById(articleId);
model.addAttribute("article", articleDto);
+ UserEntity user = getLoggedInUser();
+ model.addAttribute("user", user);
return "articles/show";
}
@GetMapping("/articles/new")
public String createArticleForm(Model model) {
+ UserEntity user = getLoggedInUser();
+ model.addAttribute("user", user);
Article article = new Article();
model.addAttribute("article", article);
return "articles/new";
@@ -65,14 +63,30 @@ public class ArticleController {
return "redirect:/articles";
}
+ private UserEntity getLoggedInUser() {
+ UserEntity user = new UserEntity();
+ String username = SecurityUtil.getSessionUser();
+ if(username != null) {
+ user = userService.findByUsername(username);
+ }
+ return user;
+ }
+
@GetMapping("/articles/delete/{articleId}")
public String deleteArticle(@PathVariable("articleId") Long articleId) {
- articleService.delete(articleId);
+ UserEntity user = getLoggedInUser();
+ ArticleDto article = articleService.findArticleById(articleId);
+ UserEntity owner = article.getCreatedBy();
+ if(owner.getId() == user.getId()) {
+ articleService.delete(articleId);
+ }
return "redirect:/articles";
}
@GetMapping("/articles/edit/{articleId}")
public String editArticleForm(@PathVariable("articleId") long articleId, Model model) {
+ UserEntity user = getLoggedInUser();
+ model.addAttribute("user", user);
ArticleDto articleDto = articleService.findArticleById(articleId);
model.addAttribute("article", articleDto);
return "articles/edit";
@@ -92,11 +106,20 @@ public class ArticleController {
@GetMapping("/articles/search")
public String searchArticle(@RequestParam(value = "search") String search, Model model) {
+ UserEntity user = getLoggedInUser();
+ model.addAttribute("user", user);
List<ArticleDto> articles = articleService.searchArticles(search);
model.addAttribute("articles", articles);
return "index";
}
+ @GetMapping("/userlogin")
+ public String login(Model model) {
+ UserEntity user = getLoggedInUser();
+ model.addAttribute("user", user);
+ return "auth/login";
+ }
+
@GetMapping("/")
public String getArticles() {
return "redirect:/articles";
diff --git a/src/main/java/com/blog/web/mappers/ArticleMapper.java b/src/main/java/com/blog/web/mappers/ArticleMapper.java
new file mode 100644
index 0000000..a3642da
--- /dev/null
+++ b/src/main/java/com/blog/web/mappers/ArticleMapper.java
@@ -0,0 +1,31 @@
+package com.blog.web.mappers;
+
+import com.blog.web.dto.ArticleDto;
+import com.blog.web.models.Article;
+
+public class ArticleMapper {
+ public static Article mapToArticle(ArticleDto articleDto) {
+ Article article = Article.builder()
+ .id(articleDto.getId())
+ .title(articleDto.getTitle())
+ .photoUrl(articleDto.getPhotoUrl())
+ .content(articleDto.getContent())
+ .createdBy(articleDto.getCreatedBy())
+ .createdOn(articleDto.getCreatedOn())
+ .updatedOn(articleDto.getUpdatedOn())
+ .build();
+ return article;
+ }
+
+ public static ArticleDto mapToArticleDto(Article article) {
+ return ArticleDto.builder()
+ .id(article.getId())
+ .title(article.getTitle())
+ .photoUrl(article.getPhotoUrl())
+ .content(article.getContent())
+ .createdBy(article.getCreatedBy())
+ .createdOn(article.getCreatedOn())
+ .updatedOn(article.getUpdatedOn())
+ .build();
+ }
+}
diff --git a/src/main/java/com/blog/web/security/SecurityConfig.java b/src/main/java/com/blog/web/security/SecurityConfig.java
index 49b3402..6b85bb3 100644
--- a/src/main/java/com/blog/web/security/SecurityConfig.java
+++ b/src/main/java/com/blog/web/security/SecurityConfig.java
@@ -36,12 +36,12 @@ public class SecurityConfig {
.permitAll()
)
.formLogin(form -> form
- .loginPage("/login")
+ .loginPage("/userlogin")
.usernameParameter("username")
.passwordParameter("password")
.defaultSuccessUrl("/articles")
- .loginProcessingUrl("/login")
- .failureUrl("/login?error=true")
+ .loginProcessingUrl("/userlogin")
+ .failureUrl("/userlogin?error=true")
.permitAll()
).logout(
logout -> logout
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 6fdbe3f..1ddd6f0 100644
--- a/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
+++ b/src/main/java/com/blog/web/services/impl/ArticleServiceImpl.java
@@ -12,6 +12,9 @@ import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
+import static com.blog.web.mappers.ArticleMapper.mapToArticle;
+import static com.blog.web.mappers.ArticleMapper.mapToArticleDto;
+
@Service
public class ArticleServiceImpl implements ArticleService {
public ArticleServiceImpl(com.blog.web.repository.ArticleRepository articleRepository, com.blog.web.repository.UserRepository userRepository) {
@@ -25,7 +28,7 @@ public class ArticleServiceImpl implements ArticleService {
@Override
public List<ArticleDto> findAllArticles() {
List<Article> articles = articleRepository.findAll();
- return articles.stream().map(this::mapToArticleDto).collect(Collectors.toList());
+ return articles.stream().map((article) -> mapToArticleDto(article)).collect(Collectors.toList());
}
@Override
@@ -62,29 +65,4 @@ public class ArticleServiceImpl implements ArticleService {
List<Article> articles = articleRepository.searchArticles(search);
return articles.stream().map(article -> mapToArticleDto(article)).collect(Collectors.toList());
}
-
- private Article mapToArticle(ArticleDto articleDto) {
- Article article = Article.builder()
- .id(articleDto.getId())
- .title(articleDto.getTitle())
- .photoUrl(articleDto.getPhotoUrl())
- .content(articleDto.getContent())
- .createdBy(articleDto.getCreatedBy())
- .createdOn(articleDto.getCreatedOn())
- .updatedOn(articleDto.getUpdatedOn())
- .build();
- return article;
- }
-
- private ArticleDto mapToArticleDto(Article article) {
- return ArticleDto.builder()
- .id(article.getId())
- .title(article.getTitle())
- .photoUrl(article.getPhotoUrl())
- .content(article.getContent())
- .createdBy(article.getCreatedBy())
- .createdOn(article.getCreatedOn())
- .updatedOn(article.getUpdatedOn())
- .build();
- }
}