72 lines
2.9 KiB
Java
72 lines
2.9 KiB
Java
package github.benjamin.equipreservebackend.controller;
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
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.security.access.prepost.PreAuthorize;
|
|
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));
|
|
}
|
|
|
|
@PutMapping("/user/{id}")
|
|
public ResponseResult<UserVO> updateUser(@PathVariable Long id,
|
|
@RequestBody UserDTO dto) {
|
|
userService.updateUser(id, dto);
|
|
return ResponseResult.success(userService.getUserVO(id));
|
|
}
|
|
|
|
@PreAuthorize("hasRole('ADMIN')")
|
|
@PostMapping("/user")
|
|
public ResponseResult<?> addUser(@RequestBody UserDTO dto) {
|
|
userService.addUser(dto);
|
|
return ResponseResult.success();
|
|
}
|
|
|
|
@PreAuthorize("hasRole('ADMIN')")
|
|
@GetMapping("/user")
|
|
public ResponseResult<Page<UserVO>> getUserVOs(@RequestParam(defaultValue = "1") Integer page,
|
|
@RequestParam(defaultValue = "10") Integer size,
|
|
@RequestParam(required = false) String name) {
|
|
Page<User> pageRequest = new Page<>(page, size);
|
|
return ResponseResult.success(userService.getUserVOs(pageRequest, name));
|
|
}
|
|
|
|
@PreAuthorize("hasRole('ADMIN')")
|
|
@DeleteMapping("/user/{userId}")
|
|
public ResponseResult<?> deleteUser(@PathVariable("userId") Long userId) {
|
|
userService.deleteById(userId);
|
|
return ResponseResult.success();
|
|
}
|
|
}
|