signup bast
This commit is contained in:
parent
baa24b4b86
commit
ddaad2f2de
9 changed files with 60 additions and 13 deletions
5
http-requests/http-client.env.json
Normal file
5
http-requests/http-client.env.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"dev": {
|
||||
"url": "http://localhost:8080/api/v1"
|
||||
}
|
||||
}
|
||||
12
http-requests/requests.http
Normal file
12
http-requests/requests.http
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
### signup
|
||||
POST {{url}}/user/signup
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"email": "ratp@htl-steyr.ac.at",
|
||||
"password": "test",
|
||||
"firstname": "Peter",
|
||||
"lastname": "Rathgeb"
|
||||
}
|
||||
|
||||
###
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package me.jweissen.aeticket.controller;
|
||||
|
||||
import me.jweissen.aeticket.dto.request.LoginRequestDto;
|
||||
import me.jweissen.aeticket.dto.request.UserRequestDto;
|
||||
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.UserResponseDto;
|
||||
|
|
@ -22,9 +22,8 @@ public class UserController {
|
|||
}
|
||||
|
||||
@PostMapping("/signup")
|
||||
public ResponseEntity<SignupResponseDto> signUp(@RequestBody UserRequestDto user) {
|
||||
// TODO
|
||||
return new ResponseEntity<>(null, HttpStatus.OK);
|
||||
public ResponseEntity<SignupResponseDto> signUp(@RequestBody SignupRequestDto user) {
|
||||
return new ResponseEntity<>(userService.create(user), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/signin")
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
package me.jweissen.aeticket.dto.request;
|
||||
|
||||
public record SignupRequestDto(String email, String password, String firstname, String lastname) {
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
package me.jweissen.aeticket.dto.request;
|
||||
|
||||
public record UserRequestDto(String email, String password, String firstname, String lastname) {
|
||||
}
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
package me.jweissen.aeticket.model;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table
|
||||
@RequiredArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
@Setter
|
||||
public class User {
|
||||
|
|
@ -33,7 +33,6 @@ public class User {
|
|||
private String password;
|
||||
|
||||
@Column
|
||||
@NonNull
|
||||
private String token;
|
||||
|
||||
@Column(nullable = false)
|
||||
|
|
|
|||
|
|
@ -1,11 +1,15 @@
|
|||
package me.jweissen.aeticket.service;
|
||||
|
||||
import me.jweissen.aeticket.dto.request.SignupRequestDto;
|
||||
import me.jweissen.aeticket.dto.response.SignupResponseDto;
|
||||
import me.jweissen.aeticket.dto.response.UserResponseDto;
|
||||
import me.jweissen.aeticket.model.Role;
|
||||
import me.jweissen.aeticket.model.User;
|
||||
import me.jweissen.aeticket.repository.UserRepository;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
@Service
|
||||
public class UserService {
|
||||
|
|
@ -26,6 +30,16 @@ public class UserService {
|
|||
);
|
||||
}
|
||||
|
||||
public static User fromDto(SignupRequestDto dto) {
|
||||
return new User(
|
||||
dto.firstname(),
|
||||
dto.lastname(),
|
||||
dto.email(),
|
||||
dto.password(),
|
||||
Role.USER
|
||||
);
|
||||
}
|
||||
|
||||
public static List<UserResponseDto> toDtos(List<User> users) {
|
||||
return users.stream().map(UserService::toDto).toList();
|
||||
}
|
||||
|
|
@ -34,6 +48,14 @@ public class UserService {
|
|||
return UserService.toDtos(userRepository.findAll());
|
||||
}
|
||||
|
||||
public SignupResponseDto create(SignupRequestDto dto) {
|
||||
var user = UserService.fromDto(dto);
|
||||
user = userRepository.save(user);
|
||||
user.setToken(jwtService.generateToken(user.getId()));
|
||||
userRepository.save(user);
|
||||
return new SignupResponseDto(user.getToken());
|
||||
}
|
||||
|
||||
public void delete(Integer id) {
|
||||
userRepository.deleteById(id);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,18 @@
|
|||
spring:
|
||||
jpa:
|
||||
hibernate:
|
||||
ddl-auto: update
|
||||
properties:
|
||||
hibernate:
|
||||
enable_lazy_load_no_trans: true
|
||||
show-sql: true
|
||||
datasource:
|
||||
username: my
|
||||
password: ticket
|
||||
url: 'jdbc:mysql://localhost:4306/myticket'
|
||||
server:
|
||||
servlet:
|
||||
context-path: '/api/v1'
|
||||
token:
|
||||
secret: "RATP loves Laravel more than Symfony"
|
||||
validForHours: 24
|
||||
Reference in a new issue