generated from Java-2025Fall/final-vibevault-template
更新 src/main/java/com/vibevault/controller/AuthController.java
This commit is contained in:
parent
16896dee2c
commit
80bdeefa76
@ -10,13 +10,13 @@ import org.springframework.web.server.ResponseStatusException;
|
||||
|
||||
/**
|
||||
* 认证控制器
|
||||
*
|
||||
*
|
||||
* 需要实现以下端点:
|
||||
* - POST /api/auth/register - 用户注册
|
||||
* - 检查用户名是否已存在(已存在返回 409 Conflict)
|
||||
* - 密码需要加密存储
|
||||
* - 成功返回 201
|
||||
*
|
||||
*
|
||||
* - POST /api/auth/login - 用户登录
|
||||
* - 验证用户名和密码
|
||||
* - 验证失败返回 401 Unauthorized
|
||||
@ -36,9 +36,43 @@ public class AuthController {
|
||||
this.jwtService = jwtService;
|
||||
}
|
||||
|
||||
// TODO: 实现 POST /api/auth/register (状态码 201)
|
||||
// POST /api/auth/register - 用户注册 状态码 201
|
||||
@PostMapping("/register")
|
||||
@ResponseStatus(HttpStatus.CREATED)
|
||||
public RegisterResponse register(@RequestBody RegisterRequest request) {
|
||||
// 检查用户名是否已存在
|
||||
if (userRepository.existsByUsername(request.username())) {
|
||||
throw new ResponseStatusException(HttpStatus.CONFLICT, "Username already exists");
|
||||
}
|
||||
|
||||
// TODO: 实现 POST /api/auth/login
|
||||
// 创建用户并加密密码
|
||||
User user = new User();
|
||||
user.setUsername(request.username());
|
||||
user.setPassword(passwordEncoder.encode(request.password()));
|
||||
// 默认角色设置为普通用户(根据你的User类调整)
|
||||
user.setRole("ROLE_USER");
|
||||
userRepository.save(user);
|
||||
|
||||
return new RegisterResponse("User registered successfully", request.username());
|
||||
}
|
||||
|
||||
// POST /api/auth/login - 用户登录
|
||||
@PostMapping("/login")
|
||||
public LoginResponse login(@RequestBody LoginRequest request) {
|
||||
// 查询用户
|
||||
User user = userRepository.findByUsername(request.username())
|
||||
.orElseThrow(() -> new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Invalid username or password"));
|
||||
|
||||
// 验证密码
|
||||
if (!passwordEncoder.matches(request.password(), user.getPassword())) {
|
||||
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Invalid username or password");
|
||||
}
|
||||
|
||||
// 生成JWT token
|
||||
String token = jwtService.generateToken(user.getUsername());
|
||||
|
||||
return new LoginResponse(token, user.getUsername());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -59,4 +93,4 @@ record LoginRequest(String username, String password) {}
|
||||
/**
|
||||
* 登录响应 DTO
|
||||
*/
|
||||
record LoginResponse(String token, String username) {}
|
||||
record LoginResponse(String token, String username) {}
|
||||
Loading…
Reference in New Issue
Block a user