From c771dee930ad9c059497c5493e10d62f30235251 Mon Sep 17 00:00:00 2001 From: Leonid Date: Fri, 7 Feb 2025 11:43:43 +0300 Subject: [PATCH] =?UTF-8?q?-=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BF=D0=BE=D0=BB=D0=B5=20=D0=B0=D0=B2=D1=82=D0=BE=D1=80=20?= =?UTF-8?q?=D0=B2=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://www.youtube.com/watch?v=PpoOoR55Ypw&list=PLU2ftbIeotGpAYRP9Iv2KLIwK36-o_qYk&index=6 --- .../sweater/controller/MainController.java | 19 ++++++++++--- .../sytes/kashey/sweater/domain/Message.java | 27 ++++++++++++++++--- src/main/resources/templates/main.mustache | 1 + 3 files changed, 40 insertions(+), 7 deletions(-) diff --git a/src/main/java/net/sytes/kashey/sweater/controller/MainController.java b/src/main/java/net/sytes/kashey/sweater/controller/MainController.java index 8a095c9..5f58f3a 100644 --- a/src/main/java/net/sytes/kashey/sweater/controller/MainController.java +++ b/src/main/java/net/sytes/kashey/sweater/controller/MainController.java @@ -1,7 +1,12 @@ package net.sytes.kashey.sweater.controller; import net.sytes.kashey.sweater.domain.Message; +import net.sytes.kashey.sweater.domain.User; import net.sytes.kashey.sweater.repository.MessageRepository; +import net.sytes.kashey.sweater.repository.UserRepository; +import net.sytes.kashey.sweater.security.CustomUserDetails; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -13,9 +18,11 @@ import java.util.Map; public class MainController { private final MessageRepository messageRepository; + private final UserRepository userRepository; - public MainController(MessageRepository messageRepository) { + public MainController(MessageRepository messageRepository, UserRepository userRepository) { this.messageRepository = messageRepository; + this.userRepository = userRepository; } @GetMapping("/") @@ -31,9 +38,15 @@ public class MainController { } @PostMapping("/main") - public String addMessage(@RequestParam String text, @RequestParam String tag, Map model) { + public String addMessage(@AuthenticationPrincipal CustomUserDetails details, + @RequestParam String text, + @RequestParam String tag, + Map model) { - messageRepository.save(new Message(text, tag)); + User author = userRepository.findByUsername(details.getUsername()) + .orElseThrow(() -> new UsernameNotFoundException("User not found: " + details.getUsername())); + + messageRepository.save(new Message(text, tag, author)); model.put("messages", messageRepository.findAll()); return "main"; } diff --git a/src/main/java/net/sytes/kashey/sweater/domain/Message.java b/src/main/java/net/sytes/kashey/sweater/domain/Message.java index d226a83..6c5f74e 100644 --- a/src/main/java/net/sytes/kashey/sweater/domain/Message.java +++ b/src/main/java/net/sytes/kashey/sweater/domain/Message.java @@ -1,9 +1,6 @@ package net.sytes.kashey.sweater.domain; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; @Entity public class Message { @@ -13,6 +10,10 @@ public class Message { private String text; private String tag; + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "user_id") + private User author; + public Message() { } @@ -21,6 +22,12 @@ public class Message { this.tag = tag; } + public Message(String text, String tag, User author) { + this.text = text; + this.tag = tag; + this.author = author; + } + public Integer getId() { return id; } @@ -44,4 +51,16 @@ public class Message { public void setTag(String tag) { this.tag = tag; } + + public User getAuthor() { + return author; + } + + public void setAuthor(User author) { + this.author = author; + } + + public String getAuthorName() { + return author == null ? "": author.getUsername(); + } } diff --git a/src/main/resources/templates/main.mustache b/src/main/resources/templates/main.mustache index 88fb4b0..555f8d7 100644 --- a/src/main/resources/templates/main.mustache +++ b/src/main/resources/templates/main.mustache @@ -32,6 +32,7 @@ {{id}} {{text}} {{tag}} + {{authorName}} {{/messages}}