From f4d04f9a04088ad7726f20bbce6707c65d2ce739 Mon Sep 17 00:00:00 2001 From: Jonas Weissengruber Date: Tue, 19 Dec 2023 02:13:16 +0100 Subject: [PATCH] signup bast --- .../aeticket/controller/CartController.java | 3 +- .../aeticket/controller/EventController.java | 31 +++++++------- .../aeticket/controller/UserController.java | 27 ++++++++---- .../dto/request/EventUpdateRequestDto.java | 2 +- .../dto/request/UserUpdateRequestDto.java | 2 +- .../dto/response/LoginResponseDto.java | 4 -- .../dto/response/SignupResponseDto.java | 4 -- .../dto/response/TokenResponseDto.java | 4 ++ .../aeticket/repository/EventRepository.java | 2 +- .../aeticket/service/AuthService.java | 13 ------ .../aeticket/service/EventService.java | 15 +++++-- .../aeticket/service/UserService.java | 41 ++++++++++++++++--- 12 files changed, 93 insertions(+), 55 deletions(-) delete mode 100644 src/main/java/me/jweissen/aeticket/dto/response/LoginResponseDto.java delete mode 100644 src/main/java/me/jweissen/aeticket/dto/response/SignupResponseDto.java create mode 100644 src/main/java/me/jweissen/aeticket/dto/response/TokenResponseDto.java diff --git a/src/main/java/me/jweissen/aeticket/controller/CartController.java b/src/main/java/me/jweissen/aeticket/controller/CartController.java index 6c339dc..8baf916 100644 --- a/src/main/java/me/jweissen/aeticket/controller/CartController.java +++ b/src/main/java/me/jweissen/aeticket/controller/CartController.java @@ -27,7 +27,8 @@ public class CartController { @PostMapping("/add") public ResponseEntity addEntry() { - return new ResponseEntity<>(HttpStatus.NO_CONTENT); + + return ResponseEntity.noContent().build(); } diff --git a/src/main/java/me/jweissen/aeticket/controller/EventController.java b/src/main/java/me/jweissen/aeticket/controller/EventController.java index b377313..752c1c8 100644 --- a/src/main/java/me/jweissen/aeticket/controller/EventController.java +++ b/src/main/java/me/jweissen/aeticket/controller/EventController.java @@ -19,17 +19,7 @@ public class EventController { this.eventService = eventService; } - @GetMapping("/{id}") - public ResponseEntity getById(@PathVariable Integer id) { - return new ResponseEntity<>(eventService.getById(id), HttpStatus.OK); - } - - @GetMapping("/list") - public ResponseEntity> getAllFuture() { - return new ResponseEntity<>(eventService.getAllFuture(), HttpStatus.OK); - } - - @PostMapping("/add") + @PostMapping("/create") public ResponseEntity create(@RequestBody EventRequestDto event) { // TODO admin only eventService.create(event); @@ -39,14 +29,27 @@ public class EventController { @PutMapping("/update") public ResponseEntity update(@RequestBody EventUpdateRequestDto event) { // TODO admin only - // eventService.update(event); + eventService.update(event); return new ResponseEntity<>(HttpStatus.CREATED); } @DeleteMapping("/delete/{id}") - public ResponseEntity delete(@PathVariable Integer id) { + public ResponseEntity delete(@PathVariable Long id) { // TODO admin only eventService.delete(id); - return new ResponseEntity<>(null, HttpStatus.NO_CONTENT); + return ResponseEntity.noContent().build(); } + + @GetMapping("/{id}") + public ResponseEntity getById(@PathVariable Long id) { + return eventService.getById(id) + .map(eventResponseDto -> new ResponseEntity<>(eventResponseDto, HttpStatus.OK)) + .orElseGet(() -> ResponseEntity.notFound().build()); + } + + @GetMapping("/list") + public ResponseEntity> getAllFuture() { + return new ResponseEntity<>(eventService.getAllFuture(), HttpStatus.OK); + } + } diff --git a/src/main/java/me/jweissen/aeticket/controller/UserController.java b/src/main/java/me/jweissen/aeticket/controller/UserController.java index 0eab28b..68326c2 100644 --- a/src/main/java/me/jweissen/aeticket/controller/UserController.java +++ b/src/main/java/me/jweissen/aeticket/controller/UserController.java @@ -3,7 +3,7 @@ package me.jweissen.aeticket.controller; import me.jweissen.aeticket.dto.request.LoginRequestDto; import me.jweissen.aeticket.dto.request.SignupRequestDto; import me.jweissen.aeticket.dto.request.UserUpdateRequestDto; -import me.jweissen.aeticket.dto.response.SignupResponseDto; +import me.jweissen.aeticket.dto.response.TokenResponseDto; import me.jweissen.aeticket.dto.response.UserResponseDto; import me.jweissen.aeticket.service.UserService; import org.springframework.http.HttpStatus; @@ -11,6 +11,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.Optional; @RestController @RequestMapping("/user") @@ -22,26 +23,31 @@ public class UserController { } @PostMapping("/signup") - public ResponseEntity signUp(@RequestBody SignupRequestDto user) { + public ResponseEntity signUp(@RequestBody SignupRequestDto user) { return new ResponseEntity<>(userService.create(user), HttpStatus.CREATED); } @PostMapping("/signin") - public ResponseEntity signIn(@RequestBody LoginRequestDto user) { - // TODO - return new ResponseEntity<>(null, HttpStatus.OK); + public ResponseEntity signIn(@RequestBody LoginRequestDto user) { + return userService.login(user) + .map(tokenDto -> new ResponseEntity<>(tokenDto, HttpStatus.OK)) + .orElseGet(() -> ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()); } @PutMapping("/update") public ResponseEntity update(@RequestBody UserUpdateRequestDto user) { // TODO admin only - return new ResponseEntity<>(null, HttpStatus.NO_CONTENT); + if (!userService.update(user)) { + return ResponseEntity.notFound().build(); + } + return ResponseEntity.noContent().build(); } @DeleteMapping("/delete/{id}") public ResponseEntity delete(@PathVariable Integer id) { + // TODO admin only userService.delete(id); - return new ResponseEntity<>(null, HttpStatus.NO_CONTENT); + return ResponseEntity.noContent().build(); } @GetMapping("/list") @@ -50,4 +56,11 @@ public class UserController { return new ResponseEntity<>(userService.getAll(), HttpStatus.OK); } + @GetMapping("/load/{id}") + public ResponseEntity getById(@PathVariable Integer id) { + // TODO admin only + return userService.getById(id) + .map(userResponseDto -> new ResponseEntity<>(userResponseDto, HttpStatus.OK)) + .orElseGet(() -> new ResponseEntity<>(null, HttpStatus.NOT_FOUND)); + } } diff --git a/src/main/java/me/jweissen/aeticket/dto/request/EventUpdateRequestDto.java b/src/main/java/me/jweissen/aeticket/dto/request/EventUpdateRequestDto.java index cfc0316..a64cc32 100644 --- a/src/main/java/me/jweissen/aeticket/dto/request/EventUpdateRequestDto.java +++ b/src/main/java/me/jweissen/aeticket/dto/request/EventUpdateRequestDto.java @@ -1,4 +1,4 @@ package me.jweissen.aeticket.dto.request; -public record EventUpdateRequestDto() { +public record EventUpdateRequestDto(Long id) { } diff --git a/src/main/java/me/jweissen/aeticket/dto/request/UserUpdateRequestDto.java b/src/main/java/me/jweissen/aeticket/dto/request/UserUpdateRequestDto.java index 104565a..70c7265 100644 --- a/src/main/java/me/jweissen/aeticket/dto/request/UserUpdateRequestDto.java +++ b/src/main/java/me/jweissen/aeticket/dto/request/UserUpdateRequestDto.java @@ -1,4 +1,4 @@ package me.jweissen.aeticket.dto.request; -public record UserUpdateRequestDto(Integer id, String name, String email) { +public record UserUpdateRequestDto(Integer id, String firstname, String lastname, String email) { } diff --git a/src/main/java/me/jweissen/aeticket/dto/response/LoginResponseDto.java b/src/main/java/me/jweissen/aeticket/dto/response/LoginResponseDto.java deleted file mode 100644 index 07444a4..0000000 --- a/src/main/java/me/jweissen/aeticket/dto/response/LoginResponseDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package me.jweissen.aeticket.dto.response; - -public record LoginResponseDto(String token) { -} diff --git a/src/main/java/me/jweissen/aeticket/dto/response/SignupResponseDto.java b/src/main/java/me/jweissen/aeticket/dto/response/SignupResponseDto.java deleted file mode 100644 index 6eaa3f4..0000000 --- a/src/main/java/me/jweissen/aeticket/dto/response/SignupResponseDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package me.jweissen.aeticket.dto.response; - -public record SignupResponseDto(String token) { -} diff --git a/src/main/java/me/jweissen/aeticket/dto/response/TokenResponseDto.java b/src/main/java/me/jweissen/aeticket/dto/response/TokenResponseDto.java new file mode 100644 index 0000000..f363102 --- /dev/null +++ b/src/main/java/me/jweissen/aeticket/dto/response/TokenResponseDto.java @@ -0,0 +1,4 @@ +package me.jweissen.aeticket.dto.response; + +public record TokenResponseDto(String token) { +} diff --git a/src/main/java/me/jweissen/aeticket/repository/EventRepository.java b/src/main/java/me/jweissen/aeticket/repository/EventRepository.java index c4812dc..6734e19 100644 --- a/src/main/java/me/jweissen/aeticket/repository/EventRepository.java +++ b/src/main/java/me/jweissen/aeticket/repository/EventRepository.java @@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.Query; import java.util.List; -public interface EventRepository extends JpaRepository { +public interface EventRepository extends JpaRepository { @Query("SELECT e FROM Event e WHERE e.start > CURRENT_TIMESTAMP") List findAllFuture(); } diff --git a/src/main/java/me/jweissen/aeticket/service/AuthService.java b/src/main/java/me/jweissen/aeticket/service/AuthService.java index f0327d0..4958454 100644 --- a/src/main/java/me/jweissen/aeticket/service/AuthService.java +++ b/src/main/java/me/jweissen/aeticket/service/AuthService.java @@ -1,6 +1,5 @@ package me.jweissen.aeticket.service; -import me.jweissen.aeticket.dto.response.LoginResponseDto; import me.jweissen.aeticket.model.Role; import me.jweissen.aeticket.model.User; import me.jweissen.aeticket.repository.UserRepository; @@ -18,18 +17,6 @@ public class AuthService { this.userRepository = userRepository; } - public Optional login(String username, String password) { - User user = userRepository.findByEmail(username); - // user not found or passwords don't match - if (user == null || !user.getPassword().equals(password)) { - return Optional.empty(); - } - String token = jwtService.generateToken(user.getId()); - user.setToken(token); - userRepository.save(user); - return Optional.of(new LoginResponseDto(username)); - } - public Optional getRole(String token) { User user = userRepository.findByToken(token); if (user == null) { diff --git a/src/main/java/me/jweissen/aeticket/service/EventService.java b/src/main/java/me/jweissen/aeticket/service/EventService.java index e2e6670..7684a0c 100644 --- a/src/main/java/me/jweissen/aeticket/service/EventService.java +++ b/src/main/java/me/jweissen/aeticket/service/EventService.java @@ -8,6 +8,7 @@ import me.jweissen.aeticket.repository.EventRepository; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Optional; @Service public class EventService { @@ -45,15 +46,21 @@ public class EventService { eventRepository.save(EventService.fromDto(event)); } - public void update(EventUpdateRequestDto event) { + public boolean update(EventUpdateRequestDto dto) { + return eventRepository.findById(dto.id()) + .map(event -> { + // dto auf object assignen + return true; + }) + .orElse(false); } - public void delete(Integer id) { + public void delete(Long id) { eventRepository.deleteById(id); } - public EventResponseDto getById(Integer id) { - return EventService.toDto(eventRepository.getReferenceById(id)); + public Optional getById(Long id) { + return eventRepository.findById(id).map(EventService::toDto); } public List getAllFuture() { diff --git a/src/main/java/me/jweissen/aeticket/service/UserService.java b/src/main/java/me/jweissen/aeticket/service/UserService.java index ee101e3..e0bf4d9 100644 --- a/src/main/java/me/jweissen/aeticket/service/UserService.java +++ b/src/main/java/me/jweissen/aeticket/service/UserService.java @@ -1,7 +1,9 @@ package me.jweissen.aeticket.service; +import me.jweissen.aeticket.dto.request.LoginRequestDto; import me.jweissen.aeticket.dto.request.SignupRequestDto; -import me.jweissen.aeticket.dto.response.SignupResponseDto; +import me.jweissen.aeticket.dto.request.UserUpdateRequestDto; +import me.jweissen.aeticket.dto.response.TokenResponseDto; import me.jweissen.aeticket.dto.response.UserResponseDto; import me.jweissen.aeticket.model.Role; import me.jweissen.aeticket.model.User; @@ -48,15 +50,44 @@ public class UserService { return UserService.toDtos(userRepository.findAll()); } - public SignupResponseDto create(SignupRequestDto dto) { - var user = UserService.fromDto(dto); - user = userRepository.save(user); + public String generateToken(User user) { user.setToken(jwtService.generateToken(user.getId())); userRepository.save(user); - return new SignupResponseDto(user.getToken()); + return user.getToken(); + } + + public TokenResponseDto create(SignupRequestDto dto) { + var user = UserService.fromDto(dto); + user = userRepository.save(user); + return new TokenResponseDto(generateToken(user)); } public void delete(Integer id) { userRepository.deleteById(id); } + + public Optional login(LoginRequestDto dto) { + var user = userRepository.findByEmail(dto.email()); + if (!user.getPassword().equals(dto.password())) { + return Optional.empty(); + } + return Optional.of(new TokenResponseDto(generateToken(user))); + } + + public boolean update(UserUpdateRequestDto dto) { + var userOptional = userRepository.findById(dto.id()); + if (userOptional.isEmpty()) { + return false; + } + var user = userOptional.get(); + user.setEmail(dto.email()); + user.setFirstname(dto.firstname()); + user.setLastname(dto.lastname()); + userRepository.save(user); + return true; + } + + public Optional getById(Integer id) { + return userRepository.findById(id).map(UserService::toDto); + } }