48 lines
1.9 KiB
Java

package github.benjamin.equipreservebackend.controller;
import github.benjamin.equipreservebackend.dto.LoginRequest;
import github.benjamin.equipreservebackend.dto.UserDTO;
import github.benjamin.equipreservebackend.entity.Role;
import github.benjamin.equipreservebackend.entity.User;
import github.benjamin.equipreservebackend.response.ResponseResult;
import github.benjamin.equipreservebackend.security.SecurityUser;
import github.benjamin.equipreservebackend.service.UserService;
import github.benjamin.equipreservebackend.utils.JwtUtil;
import github.benjamin.equipreservebackend.vo.LoginResponse;
import github.benjamin.equipreservebackend.vo.UserVO;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequiredArgsConstructor
public class UserController {
private final UserService userService;
private final JwtUtil jwtUtil;
@PostMapping("/login")
public ResponseResult<LoginResponse> login(@RequestBody LoginRequest request) {
User user = userService.login(request.getUsername(), request.getPassword());
SecurityUser securityUser = userService.loadSecurityUserById(user.getId());
String token = jwtUtil.generateToken(securityUser);
List<String> roles = securityUser.getRoles().stream().map(Role::getCode).toList();
return ResponseResult.success(new LoginResponse(user.getId(), user.getName(), roles, token));
}
@GetMapping("/userdetail/{id}")
public ResponseResult<UserVO> getUserVO(@PathVariable Long id) {
return ResponseResult.success(userService.getUserVO(id));
}
@PatchMapping("/user/{id}")
public ResponseResult<UserVO> updateUser(@PathVariable Long id,
@RequestBody UserDTO dto) {
userService.updateUser(id, dto);
return ResponseResult.success(userService.getUserVO(id));
}
}