更新 src/main/java/com/vibevault/controller/AuthController.java
Some checks are pending
autograde-final-vibevault / check-trigger (push) Waiting to run
autograde-final-vibevault / grade (push) Blocked by required conditions

This commit is contained in:
张雪尔 2025-12-22 04:06:22 +08:00
parent 16896dee2c
commit 80bdeefa76

View File

@ -10,13 +10,13 @@ import org.springframework.web.server.ResponseStatusException;
/** /**
* 认证控制器 * 认证控制器
* *
* 需要实现以下端点 * 需要实现以下端点
* - POST /api/auth/register - 用户注册 * - POST /api/auth/register - 用户注册
* - 检查用户名是否已存在已存在返回 409 Conflict * - 检查用户名是否已存在已存在返回 409 Conflict
* - 密码需要加密存储 * - 密码需要加密存储
* - 成功返回 201 * - 成功返回 201
* *
* - POST /api/auth/login - 用户登录 * - POST /api/auth/login - 用户登录
* - 验证用户名和密码 * - 验证用户名和密码
* - 验证失败返回 401 Unauthorized * - 验证失败返回 401 Unauthorized
@ -36,9 +36,43 @@ public class AuthController {
this.jwtService = jwtService; 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 * 登录响应 DTO
*/ */
record LoginResponse(String token, String username) {} record LoginResponse(String token, String username) {}