- Добавил поле автор в сообщение.

https://www.youtube.com/watch?v=PpoOoR55Ypw&list=PLU2ftbIeotGpAYRP9Iv2KLIwK36-o_qYk&index=6
This commit is contained in:
Leonid
2025-02-07 11:43:43 +03:00
parent 42a1b7466b
commit c771dee930
3 changed files with 40 additions and 7 deletions

View File

@@ -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<String, Object> model) {
public String addMessage(@AuthenticationPrincipal CustomUserDetails details,
@RequestParam String text,
@RequestParam String tag,
Map<String, Object> 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";
}

View File

@@ -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 ? "<none>": author.getUsername();
}
}

View File

@@ -32,6 +32,7 @@
<b>{{id}}</b>
<span>{{text}}</span>
<i>{{tag}}</i>
<strong>{{authorName}}</strong>
</div>
{{/messages}}
</body>