Я сделал API REST в Spring Boot, который поддерживает 4 модели: сообщения в блоге, комментарии по сообщениям, профили пользователей и роли. В настоящее время сообщения в блоге могут быть удалены только администратором, а не пользователем, который его создал, я хочу добавить эту функциональность, которую пост может быть удален создателем, который требует входа в систему, так как я могу это реализовать? /p>
Вот моя пользовательская модель: < /p>
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String email;
private String name;
@Column(nullable = false, unique = true)
private String username;
@Column(nullable = false)
private String password;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "users_roles",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")
)
private Set roles;
}
< /code>
Вот моя модель постов: < /p>
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(
name="Posts", uniqueConstraints = {@UniqueConstraint(columnNames = {"title"})}
)
public class Post {
@Id
@GeneratedValue(
strategy = GenerationType.IDENTITY
)
private Long id;
@Column(name = "Title", nullable = false)
private String title;
@Column(name = "Description", nullable = false)
private String description;
@Column(name = "Content", nullable = false)
private String content;
@OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true)
Set comments = new HashSet();
}
< /code>
Вот моя конечная точка удаления: < /p>
@PreAuthorize("hasRole('ADMIN')")
@DeleteMapping("/{id}")
public ResponseEntity deletePostById(@PathVariable Long id) {
postService.deletePostById(id);
return new ResponseEntity("Post Deleted Successfully", HttpStatus.OK);
}
< /code>
Изменить: Наконец -то я смог настроить его здесь, как < /p>
private User getUser() {
SecurityContext context = SecurityContextHolder.getContext();
Authentication auth = context.getAuthentication();
return userRepository.findUserByEmail(auth.getName()).orElse(null);
}
Подробнее здесь: https://stackoverflow.com/questions/756 ... -a-feature