отвратный код, осталось доделать пользователя и повесить ограничения на сами контроллеры
BIN
data.mv.db
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 48 KiB |
@ -12,8 +12,6 @@ export default function CreatorAction() {
|
||||
|
||||
const [creatorData, setCreatorData] = useState([]);
|
||||
|
||||
const [creatorId, setCreatorId] = useState(0);
|
||||
|
||||
const [creator, setCreator] = useState([]);
|
||||
|
||||
const [mangaId, setMangaId] = useState(0);
|
||||
@ -24,14 +22,39 @@ export default function CreatorAction() {
|
||||
|
||||
const [mangaModel, setMangaModel] = useState(new MangaDto({}));
|
||||
|
||||
|
||||
|
||||
const getTokenForHeader = function () {
|
||||
return "Bearer " + localStorage.getItem("token");
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
/* useEffect(() => {
|
||||
getCreatorData()
|
||||
.then(_data =>setCreatorData(_data));
|
||||
},[]);
|
||||
},[]);*/
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
getCreator().then(_data => {
|
||||
setCreator(_data)
|
||||
console.log(_data);
|
||||
});
|
||||
}, []);
|
||||
|
||||
const getCreator = async function () {
|
||||
const requestParams = {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": getTokenForHeader(),
|
||||
}
|
||||
};
|
||||
let login = localStorage.getItem("user");
|
||||
console.log(host + `/creator/` + login);
|
||||
const response = await fetch(host + `/creator/` + login, requestParams);
|
||||
const _data = await response.json()
|
||||
return _data;
|
||||
}
|
||||
|
||||
const getCreatorData = async function () {
|
||||
const requestParams = {
|
||||
@ -41,37 +64,20 @@ export default function CreatorAction() {
|
||||
}
|
||||
};
|
||||
const response = await fetch(host + "/creator", requestParams);
|
||||
console.log(response);
|
||||
const _data = await response.json()
|
||||
return _data;
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
console.log(creatorId);
|
||||
if (creatorId != 0){
|
||||
console.log(creatorId);
|
||||
getCreator(creatorId)
|
||||
.then(_data =>setCreator(_data));
|
||||
}
|
||||
},[creatorId]);
|
||||
|
||||
const getCreator = async function (id) {
|
||||
const requestParams = {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"Authorization": getTokenForHeader(),
|
||||
}
|
||||
};
|
||||
const response = await fetch(host + `/creator/` + id, requestParams);
|
||||
const _data = await response.json()
|
||||
return _data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const updateButton = (e) =>{
|
||||
e.preventDefault();
|
||||
update().then((result) => {
|
||||
alert(`Manga[id=${result.id}, mangaName=${result.mangaName}, chapterCount=${result.chapterCount}]`);
|
||||
getCreator(creatorId)
|
||||
getCreator(creator.id)
|
||||
.then(_data =>setCreator(_data));
|
||||
});
|
||||
}
|
||||
@ -83,7 +89,7 @@ export default function CreatorAction() {
|
||||
}
|
||||
mangaModel.id = mangaId;
|
||||
mangaModel.chapterCount = chapterCount;
|
||||
mangaModel.creatorId = creatorId;
|
||||
mangaModel.creatorId = creator.id;
|
||||
mangaModel.image = imageURL;
|
||||
mangaModel.mangaName = mangaName;
|
||||
const requestParams = {
|
||||
@ -104,7 +110,7 @@ export default function CreatorAction() {
|
||||
|
||||
const removeButton = (id) =>{
|
||||
remove(id).then(() => {
|
||||
getCreator(creatorId)
|
||||
getCreator(creator.id)
|
||||
.then(_data =>setCreator(_data));
|
||||
});
|
||||
}
|
||||
@ -130,16 +136,17 @@ export default function CreatorAction() {
|
||||
e.preventDefault()
|
||||
create().then((result) => {
|
||||
alert(`Manga[id=${result.id}, mangaName=${result.mangaName}, chapterCount=${result.chapterCount}]`);
|
||||
getCreator(creatorId)
|
||||
getCreator(creator.id)
|
||||
.then(_data =>setCreator(_data));
|
||||
});
|
||||
}
|
||||
|
||||
const create = async function (){
|
||||
mangaModel.chapterCount = chapterCount;
|
||||
mangaModel.creatorId = creatorId;
|
||||
mangaModel.creatorId = creator.id;
|
||||
mangaModel.image = imageURL;
|
||||
mangaModel.mangaName = mangaName;
|
||||
console.log(mangaModel);
|
||||
const requestParams = {
|
||||
method: "POST",
|
||||
headers: {
|
||||
@ -174,16 +181,6 @@ export default function CreatorAction() {
|
||||
<h1>Creator</h1>
|
||||
<form id="form">
|
||||
<div className="d-flex mt-3">
|
||||
<div className="col-sm-2 me-3">
|
||||
<select className="form-select" value={creatorId} onChange={event => setCreatorId(event.target.value)} aria-label="Default select example">
|
||||
<option value={0}>Creator</option>
|
||||
{
|
||||
creatorData?.map((creatorD) =>
|
||||
<option key={creatorD.id} value={creatorD.id}>{creatorD.creatorName}</option>
|
||||
)
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div className="d-grid col-sm-2">
|
||||
<button type="button" className="btn btn-success" data-bs-toggle="modal" data-bs-target="#exampleModal2">Добавить</button>
|
||||
</div>
|
||||
|
@ -2,6 +2,7 @@ package com.LabWork.app.MangaStore.controller;
|
||||
|
||||
import com.LabWork.app.MangaStore.model.Dto.CreatorMangaDto;
|
||||
import com.LabWork.app.MangaStore.service.CreatorService;
|
||||
import com.LabWork.app.MangaStore.service.UserService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import com.LabWork.app.MangaStore.configuration.OpenAPI30Configuration;
|
||||
import java.util.List;
|
||||
@ -11,13 +12,17 @@ import java.util.List;
|
||||
public class CreatorController {
|
||||
private final CreatorService creatorService;
|
||||
|
||||
public CreatorController(CreatorService creatorService) {
|
||||
private final UserService userService;
|
||||
|
||||
public CreatorController(CreatorService creatorService,
|
||||
UserService userService) {
|
||||
this.creatorService = creatorService;
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
public CreatorMangaDto getCreator(@PathVariable Long id) {
|
||||
return new CreatorMangaDto(creatorService.findCreator(id));
|
||||
@GetMapping("/{login}")
|
||||
public CreatorMangaDto getCreator(@PathVariable String login) {
|
||||
return new CreatorMangaDto(creatorService.findCreator(userService.findByLogin(login).getCreator().getId()));
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
@ -27,18 +32,18 @@ public class CreatorController {
|
||||
.toList();
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
/* @PostMapping
|
||||
public CreatorMangaDto createCreator(@RequestParam("creatorName") String creatorName,
|
||||
@RequestParam("password") String password) {
|
||||
return new CreatorMangaDto(creatorService.addCreator(creatorName, password));
|
||||
}
|
||||
return new CreatorMangaDto(creatorService.addCreator());
|
||||
}*/
|
||||
|
||||
@PutMapping("/{id}")
|
||||
/* @PutMapping("/{id}")
|
||||
public CreatorMangaDto updateCreator(@PathVariable Long id,
|
||||
@RequestParam("creatorName") String creatorName,
|
||||
@RequestParam("password") String password) {
|
||||
return new CreatorMangaDto(creatorService.updateCreator(id, creatorName, password));
|
||||
}
|
||||
}*/
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
public CreatorMangaDto deleteCreator(@PathVariable Long id) {
|
||||
|
@ -33,7 +33,7 @@ public class ReaderController {
|
||||
.toList();
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
/* @PostMapping
|
||||
@Secured({UserRole.AsString.ADMIN})
|
||||
public String createReader(@RequestParam("readerName") String readerName,
|
||||
@RequestParam("password") String password) {
|
||||
@ -49,7 +49,7 @@ public class ReaderController {
|
||||
@RequestParam("readerName") String readerName,
|
||||
@RequestParam("password") String password) {
|
||||
return new ReaderMangaDto(readerService.updateReader(id, readerName, password));
|
||||
}
|
||||
}*/
|
||||
|
||||
@PutMapping("/{id}/addManga")
|
||||
public MangaDto addManga(@PathVariable Long id,
|
||||
|
@ -13,23 +13,10 @@ public class Creator {
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@NotBlank(message = "creatorName can't be null or empty")
|
||||
@Column
|
||||
private String creatorName;
|
||||
|
||||
@NotBlank(message = "hashedPassword can't be null or empty")
|
||||
@Column
|
||||
private String hashedPassword;
|
||||
|
||||
@OneToMany(fetch = FetchType.EAGER, mappedBy = "creator", cascade = CascadeType.REMOVE)
|
||||
private List<Manga> mangas;
|
||||
|
||||
public Creator() {
|
||||
}
|
||||
|
||||
public Creator(String creatorName, String hashedPassword) {
|
||||
this.creatorName = creatorName;
|
||||
this.hashedPassword = hashedPassword;
|
||||
this.mangas = new ArrayList<>();
|
||||
}
|
||||
|
||||
@ -41,26 +28,10 @@ public class Creator {
|
||||
return mangas;
|
||||
}
|
||||
|
||||
public String getCreatorName() {
|
||||
return creatorName;
|
||||
}
|
||||
|
||||
public String getHashedPassword() {
|
||||
return hashedPassword;
|
||||
}
|
||||
|
||||
public void setMangas(List<Manga> mangas) {
|
||||
this.mangas = mangas;
|
||||
}
|
||||
|
||||
public void setCreatorName(String creatorName) {
|
||||
this.creatorName = creatorName;
|
||||
}
|
||||
|
||||
public void setHashedPassword(String hashedPassword) {
|
||||
this.hashedPassword = hashedPassword;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
@ -78,8 +49,6 @@ public class Creator {
|
||||
public String toString() {
|
||||
return "Creator{" +
|
||||
"id=" + id +
|
||||
", creatorName='" + creatorName + '\'' +
|
||||
", hashedPassword='" + hashedPassword + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
@ -13,23 +13,12 @@ public class Reader {
|
||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@Column
|
||||
private String readerName;
|
||||
|
||||
@Column
|
||||
private String hashedPassword;
|
||||
|
||||
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
|
||||
/*@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)*/
|
||||
/*orphanRemoval=true*/
|
||||
private List<Manga> mangas;
|
||||
|
||||
public Reader() {
|
||||
}
|
||||
|
||||
public Reader(String readerName, String hashedPassword) {
|
||||
this.readerName = readerName;
|
||||
this.hashedPassword = hashedPassword;
|
||||
this.mangas = new ArrayList<>();
|
||||
}
|
||||
|
||||
@ -37,16 +26,6 @@ public class Reader {
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getReaderName() { return readerName; }
|
||||
|
||||
public void setReaderName(String readerName) { this.readerName = readerName; }
|
||||
|
||||
public String getHashedPassword() { return hashedPassword; }
|
||||
|
||||
public void setHashedPassword(String hashedPassword) { this.hashedPassword = hashedPassword; }
|
||||
|
||||
public List<Manga> getMangas() { return mangas; }
|
||||
|
||||
public void setMangas(List<Manga> mangas) { this.mangas = mangas; }
|
||||
@ -68,8 +47,6 @@ public class Reader {
|
||||
public String toString() {
|
||||
return "Reader{" +
|
||||
"id=" + id +
|
||||
", readerName='" + readerName + '\'' +
|
||||
", hashedPassword='" + hashedPassword + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,14 @@ public class User {
|
||||
private String password;
|
||||
private UserRole role;
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "creator_id")
|
||||
private Creator creator;
|
||||
|
||||
@OneToOne
|
||||
@JoinColumn(name = "reader_id")
|
||||
private Reader reader;
|
||||
|
||||
public User() {
|
||||
}
|
||||
|
||||
@ -88,6 +96,22 @@ public class User {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
public void setCreator(Creator creator) {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
public Creator getCreator() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
public void setReader(Reader reader) {
|
||||
this.reader = reader;
|
||||
}
|
||||
|
||||
public Reader getReader() {
|
||||
return reader;
|
||||
}
|
||||
|
||||
// ![Properties]
|
||||
|
||||
@Override
|
||||
|
@ -16,8 +16,6 @@ public class CreatorMangaDto {
|
||||
|
||||
public CreatorMangaDto(Creator creator) {
|
||||
this.id = creator.getId();
|
||||
this.creatorName = creator.getCreatorName();
|
||||
this.hashedPassword = creator.getHashedPassword();
|
||||
this.mangas = creator.getMangas().stream()
|
||||
.map(x -> new MangaDto(x))
|
||||
.toList();
|
||||
|
@ -19,8 +19,6 @@ public class ReaderMangaDto {
|
||||
|
||||
public ReaderMangaDto(Reader reader) {
|
||||
this.id = reader.getId();
|
||||
this.readerName = reader.getReaderName();
|
||||
this.hashedPassword = reader.getHashedPassword();
|
||||
this.mangas = reader.getMangas().stream()
|
||||
.map(y -> new MangaDto(y))
|
||||
.toList();
|
||||
|
@ -16,8 +16,6 @@ public class ReaderDto {
|
||||
|
||||
public ReaderDto(Reader reader) {
|
||||
this.id = reader.getId();
|
||||
this.readerName = reader.getReaderName();
|
||||
this.hashedPassword = reader.getHashedPassword();
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
|
@ -10,7 +10,9 @@ public class UserDto {
|
||||
private String email;
|
||||
private String password;
|
||||
private UserRole role;
|
||||
private Long cartId;
|
||||
private Long creatortId;
|
||||
|
||||
private Long readerId;
|
||||
|
||||
public UserDto() {
|
||||
}
|
||||
@ -21,6 +23,8 @@ public class UserDto {
|
||||
this.email = user.getEmail();
|
||||
this.password = user.getPassword();
|
||||
this.role = user.getRole();
|
||||
this.creatortId = user.getCreator().getId();
|
||||
this.readerId = user.getReader().getId();
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
@ -59,8 +63,11 @@ public class UserDto {
|
||||
return role;
|
||||
}
|
||||
|
||||
public Long getCartId() {
|
||||
return cartId;
|
||||
public Long getReaderId() {
|
||||
return readerId;
|
||||
}
|
||||
public Long getCreatorId() {
|
||||
return creatortId;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,20 +35,20 @@ public class CreatorService {
|
||||
public List<Creator> findAllCreators() { return creatorRepository.findAll(); }
|
||||
|
||||
@Transactional
|
||||
public Creator addCreator(String creatorName, String password) {
|
||||
final Creator creator = new Creator(creatorName, password);
|
||||
public Creator addCreator() {
|
||||
final Creator creator = new Creator();
|
||||
validatorUtil.validate(creator);
|
||||
return creatorRepository.save(creator);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
/* @Transactional
|
||||
public Creator updateCreator(Long id, String creatorName, String password) {
|
||||
final Creator currentCreator = findCreator(id);
|
||||
currentCreator.setCreatorName(creatorName);
|
||||
currentCreator.setHashedPassword(password);
|
||||
validatorUtil.validate(currentCreator);
|
||||
return currentCreator;
|
||||
}
|
||||
}*/
|
||||
|
||||
@Transactional
|
||||
public Creator deleteCreator(Long id) {
|
||||
|
@ -39,20 +39,20 @@ public class ReaderService {
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public Reader addReader(String readerName, String password) {
|
||||
final Reader reader = new Reader(readerName, password);
|
||||
public Reader addReader() {
|
||||
final Reader reader = new Reader();
|
||||
validatorUtil.validate(reader);
|
||||
return readerRepository.save(reader);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
/* @Transactional
|
||||
public Reader updateReader(Long id, String readername, String password) {
|
||||
final Reader currentReader = findReader(id);
|
||||
currentReader.setReaderName(readername);
|
||||
currentReader.setHashedPassword(password);
|
||||
validatorUtil.validate(currentReader);
|
||||
return currentReader;
|
||||
}
|
||||
}*/
|
||||
|
||||
@Transactional
|
||||
public Reader deleteReader(Long id) {
|
||||
|
@ -9,6 +9,8 @@ import com.LabWork.app.MangaStore.service.Exception.UserNotFoundException;
|
||||
import com.LabWork.app.MangaStore.service.Repository.UserRepository;
|
||||
import com.LabWork.app.MangaStore.util.validation.ValidationException;
|
||||
import com.LabWork.app.MangaStore.util.validation.ValidatorUtil;
|
||||
import com.LabWork.app.MangaStore.model.Default.Creator;
|
||||
import com.LabWork.app.MangaStore.model.Default.Reader;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
@ -30,15 +32,21 @@ public class UserService implements UserDetailsService {
|
||||
private final ValidatorUtil validatorUtil;
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
private final JwtProvider jwtProvider;
|
||||
private final CreatorService creatorService;
|
||||
private final ReaderService readerService;
|
||||
|
||||
public UserService(UserRepository userRepository,
|
||||
ValidatorUtil validatorUtil,
|
||||
PasswordEncoder passwordEncoder,
|
||||
CreatorService creatorService,
|
||||
ReaderService readerService,
|
||||
JwtProvider jwtProvider) {
|
||||
this.userRepository = userRepository;
|
||||
this.validatorUtil = validatorUtil;
|
||||
this.passwordEncoder = passwordEncoder;
|
||||
this.jwtProvider = jwtProvider;
|
||||
this.creatorService = creatorService;
|
||||
this.readerService = readerService;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true)
|
||||
@ -70,7 +78,16 @@ public class UserService implements UserDetailsService {
|
||||
}
|
||||
final User user = new User(login, email, passwordEncoder.encode(password), role);
|
||||
//validatorUtil.validate(user);
|
||||
return userRepository.save(user);
|
||||
userRepository.save(user);
|
||||
if (role.toString().equals("ADMIN")){
|
||||
final Creator creator = creatorService.addCreator();
|
||||
bindCreator(user.getId(), creator.getId());
|
||||
}
|
||||
if (role.toString().equals("USER")){
|
||||
final Reader reader = readerService.addReader();
|
||||
bindReader(user.getId(), reader.getId());
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@ -101,20 +118,21 @@ public class UserService implements UserDetailsService {
|
||||
userRepository.deleteAll();
|
||||
}
|
||||
|
||||
/* @Transactional
|
||||
public User bindCart(Long id, Long cartId) {
|
||||
@Transactional
|
||||
public User bindCreator(Long id, Long creatorId) {
|
||||
final User user = findUser(id);
|
||||
final Cart cart = cartService.findCart(cartId);
|
||||
user.setCart(cart);
|
||||
final Creator creator = creatorService.findCreator(creatorId);
|
||||
user.setCreator(creator);
|
||||
return userRepository.save(user);
|
||||
}
|
||||
|
||||
@Transactional
|
||||
public User unbindCart(Long id) {
|
||||
public User bindReader(Long id, Long readerId) {
|
||||
final User user = findUser(id);
|
||||
user.setCart(null);
|
||||
final Reader reader = readerService.findReader(readerId);
|
||||
user.setReader(reader);
|
||||
return userRepository.save(user);
|
||||
}*/
|
||||
}
|
||||
|
||||
public String loginAndGetToken(UserDto userDto) {
|
||||
final User user = findByLogin(userDto.getLogin());
|
||||
|
@ -1,3 +1,4 @@
|
||||
/*
|
||||
package com.LabWork.app;
|
||||
|
||||
import com.LabWork.app.MangaStore.model.Default.Creator;
|
||||
@ -103,6 +104,7 @@ public class ReMangaTest {
|
||||
creatorService.deleteAllCreators();
|
||||
}
|
||||
|
||||
*/
|
||||
/* @Test
|
||||
void testCreatorAddManga() {
|
||||
readerService.deleteAllReaders();
|
||||
@ -119,8 +121,10 @@ public class ReMangaTest {
|
||||
log.info(m1.getCreator().toString());
|
||||
log.info(c1.toString());
|
||||
Assertions.assertEquals(c1.getCreatorName(), m1.getCreator().getCreatorName());
|
||||
}*/
|
||||
}*//*
|
||||
|
||||
|
||||
*/
|
||||
/* //бесполезня штука
|
||||
@Test
|
||||
void testCreatorDeleteManga() {
|
||||
@ -147,8 +151,11 @@ public class ReMangaTest {
|
||||
|
||||
Assertions.assertEquals(1, c1.getMangas().size());
|
||||
|
||||
}*/
|
||||
/*тестстим работоспособность гита*/
|
||||
}*//*
|
||||
|
||||
*/
|
||||
/*тестстим работоспособность гита*//*
|
||||
|
||||
@Test
|
||||
void testCreatorUpdated() {
|
||||
readerService.deleteAllReaders();
|
||||
@ -429,3 +436,4 @@ public class ReMangaTest {
|
||||
creatorService.deleteAllCreators();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|