重写controller,增加了用户注册和登录接口
This commit is contained in:
81
src/main/java/co/jp/app/controller/UserController.java
Normal file
81
src/main/java/co/jp/app/controller/UserController.java
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
package co.jp.app.controller;
|
||||||
|
|
||||||
|
import co.jp.app.common.ApiResponse;
|
||||||
|
import co.jp.app.dto.LoginDto;
|
||||||
|
import co.jp.app.dto.RegistrationDto;
|
||||||
|
import co.jp.app.service.JwtService;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.security.authentication.AuthenticationManager;
|
||||||
|
import org.springframework.security.authentication.BadCredentialsException;
|
||||||
|
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.*;
|
||||||
|
|
||||||
|
import co.jp.app.entity.ErrorEntity;
|
||||||
|
import co.jp.app.entity.UserEntity;
|
||||||
|
import co.jp.app.service.ErraService;
|
||||||
|
import co.jp.app.service.UserService;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
@CrossOrigin("http://192.168.1.50:5173")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/api/user")
|
||||||
|
public class UserController {
|
||||||
|
|
||||||
|
private final UserService userService;
|
||||||
|
private final AuthenticationManager authenticationManager;
|
||||||
|
private final JwtService jwtService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
public UserController(UserService userService, AuthenticationManager authenticationManager, JwtService jwtService) {
|
||||||
|
this.userService = userService;
|
||||||
|
this.authenticationManager = authenticationManager;
|
||||||
|
this.jwtService = jwtService;
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/register")
|
||||||
|
public ResponseEntity<?> registerUser(@Valid @RequestBody RegistrationDto registrationDto) {
|
||||||
|
try {
|
||||||
|
|
||||||
|
UserEntity registeredUser = userService.registerNewUser(registrationDto);
|
||||||
|
|
||||||
|
return ResponseEntity.status(HttpStatus.CREATED).body(ApiResponse.success(registeredUser.getEmail()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(ApiResponse.fail("ユーザー登録失敗しました。"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/login")
|
||||||
|
public ResponseEntity<?> authenticateUser(@Valid @RequestBody LoginDto loginDto) {
|
||||||
|
try {
|
||||||
|
Authentication authentication = authenticationManager.authenticate(
|
||||||
|
new UsernamePasswordAuthenticationToken(loginDto.getEmail(), loginDto.getPassword())
|
||||||
|
);
|
||||||
|
SecurityContextHolder.getContext().setAuthentication(authentication);
|
||||||
|
UserDetails userDetails = (UserDetails) authentication.getPrincipal();
|
||||||
|
|
||||||
|
String jwtToken = jwtService.generateToken(userDetails); // 生成单一的Token
|
||||||
|
|
||||||
|
Map<String, String> tokenResponse = new HashMap<>();
|
||||||
|
tokenResponse.put("token", jwtToken);
|
||||||
|
|
||||||
|
return ResponseEntity.ok(ApiResponse.success(tokenResponse));
|
||||||
|
|
||||||
|
} catch (BadCredentialsException e) {
|
||||||
|
|
||||||
|
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(ApiResponse.fail("メールアドレスまたはパスワードが間違っています。"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
|
||||||
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ApiResponse.fail("サーバーエラー。"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user