signup bast
This commit is contained in:
parent
ddaad2f2de
commit
f4d04f9a04
12 changed files with 93 additions and 55 deletions
|
|
@ -27,7 +27,8 @@ public class CartController {
|
||||||
|
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
public ResponseEntity<Void> addEntry() {
|
public ResponseEntity<Void> addEntry() {
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
|
||||||
|
return ResponseEntity.noContent().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,17 +19,7 @@ public class EventController {
|
||||||
this.eventService = eventService;
|
this.eventService = eventService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/{id}")
|
@PostMapping("/create")
|
||||||
public ResponseEntity<EventResponseDto> getById(@PathVariable Integer id) {
|
|
||||||
return new ResponseEntity<>(eventService.getById(id), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@GetMapping("/list")
|
|
||||||
public ResponseEntity<List<EventResponseDto>> getAllFuture() {
|
|
||||||
return new ResponseEntity<>(eventService.getAllFuture(), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/add")
|
|
||||||
public ResponseEntity<Void> create(@RequestBody EventRequestDto event) {
|
public ResponseEntity<Void> create(@RequestBody EventRequestDto event) {
|
||||||
// TODO admin only
|
// TODO admin only
|
||||||
eventService.create(event);
|
eventService.create(event);
|
||||||
|
|
@ -39,14 +29,27 @@ public class EventController {
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
public ResponseEntity<Void> update(@RequestBody EventUpdateRequestDto event) {
|
public ResponseEntity<Void> update(@RequestBody EventUpdateRequestDto event) {
|
||||||
// TODO admin only
|
// TODO admin only
|
||||||
// eventService.update(event);
|
eventService.update(event);
|
||||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/delete/{id}")
|
@DeleteMapping("/delete/{id}")
|
||||||
public ResponseEntity<Void> delete(@PathVariable Integer id) {
|
public ResponseEntity<Void> delete(@PathVariable Long id) {
|
||||||
// TODO admin only
|
// TODO admin only
|
||||||
eventService.delete(id);
|
eventService.delete(id);
|
||||||
return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
|
return ResponseEntity.noContent().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/{id}")
|
||||||
|
public ResponseEntity<EventResponseDto> getById(@PathVariable Long id) {
|
||||||
|
return eventService.getById(id)
|
||||||
|
.map(eventResponseDto -> new ResponseEntity<>(eventResponseDto, HttpStatus.OK))
|
||||||
|
.orElseGet(() -> ResponseEntity.notFound().build());
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/list")
|
||||||
|
public ResponseEntity<List<EventResponseDto>> getAllFuture() {
|
||||||
|
return new ResponseEntity<>(eventService.getAllFuture(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ package me.jweissen.aeticket.controller;
|
||||||
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
||||||
import me.jweissen.aeticket.dto.request.SignupRequestDto;
|
import me.jweissen.aeticket.dto.request.SignupRequestDto;
|
||||||
import me.jweissen.aeticket.dto.request.UserUpdateRequestDto;
|
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.dto.response.UserResponseDto;
|
||||||
import me.jweissen.aeticket.service.UserService;
|
import me.jweissen.aeticket.service.UserService;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
@ -11,6 +11,7 @@ import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/user")
|
@RequestMapping("/user")
|
||||||
|
|
@ -22,26 +23,31 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/signup")
|
@PostMapping("/signup")
|
||||||
public ResponseEntity<SignupResponseDto> signUp(@RequestBody SignupRequestDto user) {
|
public ResponseEntity<TokenResponseDto> signUp(@RequestBody SignupRequestDto user) {
|
||||||
return new ResponseEntity<>(userService.create(user), HttpStatus.CREATED);
|
return new ResponseEntity<>(userService.create(user), HttpStatus.CREATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/signin")
|
@PostMapping("/signin")
|
||||||
public ResponseEntity<SignupResponseDto> signIn(@RequestBody LoginRequestDto user) {
|
public ResponseEntity<TokenResponseDto> signIn(@RequestBody LoginRequestDto user) {
|
||||||
// TODO
|
return userService.login(user)
|
||||||
return new ResponseEntity<>(null, HttpStatus.OK);
|
.map(tokenDto -> new ResponseEntity<>(tokenDto, HttpStatus.OK))
|
||||||
|
.orElseGet(() -> ResponseEntity.status(HttpStatus.UNAUTHORIZED).build());
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
public ResponseEntity<Void> update(@RequestBody UserUpdateRequestDto user) {
|
public ResponseEntity<Void> update(@RequestBody UserUpdateRequestDto user) {
|
||||||
// TODO admin only
|
// 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}")
|
@DeleteMapping("/delete/{id}")
|
||||||
public ResponseEntity<Void> delete(@PathVariable Integer id) {
|
public ResponseEntity<Void> delete(@PathVariable Integer id) {
|
||||||
|
// TODO admin only
|
||||||
userService.delete(id);
|
userService.delete(id);
|
||||||
return new ResponseEntity<>(null, HttpStatus.NO_CONTENT);
|
return ResponseEntity.noContent().build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
|
|
@ -50,4 +56,11 @@ public class UserController {
|
||||||
return new ResponseEntity<>(userService.getAll(), HttpStatus.OK);
|
return new ResponseEntity<>(userService.getAll(), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/load/{id}")
|
||||||
|
public ResponseEntity<UserResponseDto> 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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package me.jweissen.aeticket.dto.request;
|
package me.jweissen.aeticket.dto.request;
|
||||||
|
|
||||||
public record EventUpdateRequestDto() {
|
public record EventUpdateRequestDto(Long id) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package me.jweissen.aeticket.dto.request;
|
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) {
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
package me.jweissen.aeticket.dto.response;
|
|
||||||
|
|
||||||
public record LoginResponseDto(String token) {
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
package me.jweissen.aeticket.dto.response;
|
|
||||||
|
|
||||||
public record SignupResponseDto(String token) {
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
package me.jweissen.aeticket.dto.response;
|
||||||
|
|
||||||
|
public record TokenResponseDto(String token) {
|
||||||
|
}
|
||||||
|
|
@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface EventRepository extends JpaRepository<Event, Integer> {
|
public interface EventRepository extends JpaRepository<Event, Long> {
|
||||||
@Query("SELECT e FROM Event e WHERE e.start > CURRENT_TIMESTAMP")
|
@Query("SELECT e FROM Event e WHERE e.start > CURRENT_TIMESTAMP")
|
||||||
List<Event> findAllFuture();
|
List<Event> findAllFuture();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
package me.jweissen.aeticket.service;
|
package me.jweissen.aeticket.service;
|
||||||
|
|
||||||
import me.jweissen.aeticket.dto.response.LoginResponseDto;
|
|
||||||
import me.jweissen.aeticket.model.Role;
|
import me.jweissen.aeticket.model.Role;
|
||||||
import me.jweissen.aeticket.model.User;
|
import me.jweissen.aeticket.model.User;
|
||||||
import me.jweissen.aeticket.repository.UserRepository;
|
import me.jweissen.aeticket.repository.UserRepository;
|
||||||
|
|
@ -18,18 +17,6 @@ public class AuthService {
|
||||||
this.userRepository = userRepository;
|
this.userRepository = userRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Optional<LoginResponseDto> 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<Role> getRole(String token) {
|
public Optional<Role> getRole(String token) {
|
||||||
User user = userRepository.findByToken(token);
|
User user = userRepository.findByToken(token);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import me.jweissen.aeticket.repository.EventRepository;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class EventService {
|
public class EventService {
|
||||||
|
|
@ -45,15 +46,21 @@ public class EventService {
|
||||||
eventRepository.save(EventService.fromDto(event));
|
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);
|
eventRepository.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public EventResponseDto getById(Integer id) {
|
public Optional<EventResponseDto> getById(Long id) {
|
||||||
return EventService.toDto(eventRepository.getReferenceById(id));
|
return eventRepository.findById(id).map(EventService::toDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EventResponseDto> getAllFuture() {
|
public List<EventResponseDto> getAllFuture() {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
package me.jweissen.aeticket.service;
|
package me.jweissen.aeticket.service;
|
||||||
|
|
||||||
|
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
||||||
import me.jweissen.aeticket.dto.request.SignupRequestDto;
|
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.dto.response.UserResponseDto;
|
||||||
import me.jweissen.aeticket.model.Role;
|
import me.jweissen.aeticket.model.Role;
|
||||||
import me.jweissen.aeticket.model.User;
|
import me.jweissen.aeticket.model.User;
|
||||||
|
|
@ -48,15 +50,44 @@ public class UserService {
|
||||||
return UserService.toDtos(userRepository.findAll());
|
return UserService.toDtos(userRepository.findAll());
|
||||||
}
|
}
|
||||||
|
|
||||||
public SignupResponseDto create(SignupRequestDto dto) {
|
public String generateToken(User user) {
|
||||||
var user = UserService.fromDto(dto);
|
|
||||||
user = userRepository.save(user);
|
|
||||||
user.setToken(jwtService.generateToken(user.getId()));
|
user.setToken(jwtService.generateToken(user.getId()));
|
||||||
userRepository.save(user);
|
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) {
|
public void delete(Integer id) {
|
||||||
userRepository.deleteById(id);
|
userRepository.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<TokenResponseDto> 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<UserResponseDto> getById(Integer id) {
|
||||||
|
return userRepository.findById(id).map(UserService::toDto);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue