上传到git
This commit is contained in:
@ -0,0 +1,67 @@
|
||||
package co.jp.springp0421.dogdemo.controller;
|
||||
|
||||
import co.jp.springp0421.dogdemo.common.ApiResponse;
|
||||
import co.jp.springp0421.dogdemo.dto.LoginDto;
|
||||
import co.jp.springp0421.dogdemo.dto.RegistrationDto;
|
||||
import co.jp.springp0421.dogdemo.dto.UserDto;
|
||||
import co.jp.springp0421.dogdemo.entity.UserEntity;
|
||||
import co.jp.springp0421.dogdemo.service.JwtService;
|
||||
import co.jp.springp0421.dogdemo.service.UserService;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.security.authentication.AuthenticationManager;
|
||||
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.security.core.userdetails.UserDetails;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
private final AuthenticationManager authenticationManager;
|
||||
private final JwtService jwtService;
|
||||
|
||||
public UserController(UserService userService, AuthenticationManager authenticationManager, JwtService jwtService) {
|
||||
this.userService = userService;
|
||||
this.authenticationManager = authenticationManager;
|
||||
this.jwtService = jwtService;
|
||||
}
|
||||
|
||||
@PostMapping("/api/user/register")
|
||||
public ResponseEntity<ApiResponse<UserDto>> registerUser(@Valid @RequestBody RegistrationDto registrationDto) {
|
||||
|
||||
UserEntity registeredUser = userService.registerNewUser(registrationDto);
|
||||
|
||||
UserDto userDto = new UserDto();
|
||||
|
||||
userDto.setEmail(registeredUser.getEmail());
|
||||
userDto.setName(registeredUser.getName());
|
||||
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(ApiResponse.success(userDto));
|
||||
}
|
||||
|
||||
@PostMapping("/api/user/login")
|
||||
public ResponseEntity<ApiResponse<Map<String, String>>> authenticateUser(@Valid @RequestBody LoginDto loginDto) {
|
||||
|
||||
Authentication authentication = authenticationManager.authenticate(
|
||||
new UsernamePasswordAuthenticationToken(loginDto.getEmail(), loginDto.getPassword())
|
||||
);
|
||||
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
|
||||
|
||||
String jwtToken = jwtService.generateToken(userDetails);
|
||||
|
||||
Map<String, String> tokenResponse = new HashMap<>();
|
||||
tokenResponse.put("token", jwtToken);
|
||||
|
||||
return ResponseEntity.ok(ApiResponse.success(tokenResponse));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user