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;
|
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.UserRequestDto;
|
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.SignupResponseDto;
|
||||||
import me.jweissen.aeticket.dto.response.UserResponseDto;
|
import me.jweissen.aeticket.dto.response.UserResponseDto;
|
||||||
|
|
@ -22,9 +22,8 @@ public class UserController {
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/signup")
|
@PostMapping("/signup")
|
||||||
public ResponseEntity<SignupResponseDto> signUp(@RequestBody UserRequestDto user) {
|
public ResponseEntity<SignupResponseDto> signUp(@RequestBody SignupRequestDto user) {
|
||||||
// TODO
|
return new ResponseEntity<>(userService.create(user), HttpStatus.CREATED);
|
||||||
return new ResponseEntity<>(null, HttpStatus.OK);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/signin")
|
@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;
|
package me.jweissen.aeticket.model;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.Getter;
|
import lombok.*;
|
||||||
import lombok.NonNull;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table
|
@Table
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
public class User {
|
public class User {
|
||||||
|
|
@ -33,7 +33,6 @@ public class User {
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@NonNull
|
|
||||||
private String token;
|
private String token;
|
||||||
|
|
||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
package me.jweissen.aeticket.service;
|
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.dto.response.UserResponseDto;
|
||||||
|
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;
|
||||||
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 UserService {
|
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) {
|
public static List<UserResponseDto> toDtos(List<User> users) {
|
||||||
return users.stream().map(UserService::toDto).toList();
|
return users.stream().map(UserService::toDto).toList();
|
||||||
}
|
}
|
||||||
|
|
@ -34,6 +48,14 @@ public class UserService {
|
||||||
return UserService.toDtos(userRepository.findAll());
|
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) {
|
public void delete(Integer id) {
|
||||||
userRepository.deleteById(id);
|
userRepository.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,18 @@
|
||||||
spring:
|
spring:
|
||||||
|
jpa:
|
||||||
|
hibernate:
|
||||||
|
ddl-auto: update
|
||||||
|
properties:
|
||||||
|
hibernate:
|
||||||
|
enable_lazy_load_no_trans: true
|
||||||
|
show-sql: true
|
||||||
datasource:
|
datasource:
|
||||||
username: my
|
username: my
|
||||||
password: ticket
|
password: ticket
|
||||||
url: 'jdbc:mysql://localhost:4306/myticket'
|
url: 'jdbc:mysql://localhost:4306/myticket'
|
||||||
|
server:
|
||||||
|
servlet:
|
||||||
|
context-path: '/api/v1'
|
||||||
token:
|
token:
|
||||||
secret: "RATP loves Laravel more than Symfony"
|
secret: "RATP loves Laravel more than Symfony"
|
||||||
validForHours: 24
|
validForHours: 24
|
||||||
Reference in a new issue