signup bast

This commit is contained in:
Jonas Weissengruber 2023-12-19 02:13:16 +01:00
parent ddaad2f2de
commit f4d04f9a04
12 changed files with 93 additions and 55 deletions

View file

@ -27,7 +27,8 @@ public class CartController {
@PostMapping("/add")
public ResponseEntity<Void> addEntry() {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
return ResponseEntity.noContent().build();
}

View file

@ -19,17 +19,7 @@ public class EventController {
this.eventService = eventService;
}
@GetMapping("/{id}")
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")
@PostMapping("/create")
public ResponseEntity<Void> create(@RequestBody EventRequestDto event) {
// TODO admin only
eventService.create(event);
@ -39,14 +29,27 @@ public class EventController {
@PutMapping("/update")
public ResponseEntity<Void> update(@RequestBody EventUpdateRequestDto event) {
// TODO admin only
// eventService.update(event);
eventService.update(event);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@DeleteMapping("/delete/{id}")
public ResponseEntity<Void> delete(@PathVariable Integer id) {
public ResponseEntity<Void> 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<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);
}
}

View file

@ -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<SignupResponseDto> signUp(@RequestBody SignupRequestDto user) {
public ResponseEntity<TokenResponseDto> signUp(@RequestBody SignupRequestDto user) {
return new ResponseEntity<>(userService.create(user), HttpStatus.CREATED);
}
@PostMapping("/signin")
public ResponseEntity<SignupResponseDto> signIn(@RequestBody LoginRequestDto user) {
// TODO
return new ResponseEntity<>(null, HttpStatus.OK);
public ResponseEntity<TokenResponseDto> 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<Void> 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<Void> 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<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));
}
}

View file

@ -1,4 +1,4 @@
package me.jweissen.aeticket.dto.request;
public record EventUpdateRequestDto() {
public record EventUpdateRequestDto(Long id) {
}

View file

@ -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) {
}

View file

@ -1,4 +0,0 @@
package me.jweissen.aeticket.dto.response;
public record LoginResponseDto(String token) {
}

View file

@ -1,4 +0,0 @@
package me.jweissen.aeticket.dto.response;
public record SignupResponseDto(String token) {
}

View file

@ -0,0 +1,4 @@
package me.jweissen.aeticket.dto.response;
public record TokenResponseDto(String token) {
}

View file

@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.Query;
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")
List<Event> findAllFuture();
}

View file

@ -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<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) {
User user = userRepository.findByToken(token);
if (user == null) {

View file

@ -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<EventResponseDto> getById(Long id) {
return eventRepository.findById(id).map(EventService::toDto);
}
public List<EventResponseDto> getAllFuture() {

View file

@ -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<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);
}
}