AuthController.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.qqflow.engine.domain.system.controller;
  2. import com.qqflow.engine.common.Result;
  3. import com.qqflow.engine.common.util.SecurityUtils;
  4. import com.qqflow.engine.config.security.LoginUser;
  5. import com.qqflow.engine.domain.system.assembler.UserAssembler;
  6. import com.qqflow.engine.domain.system.dto.LoginDTO;
  7. import com.qqflow.engine.domain.system.dto.UserDTO;
  8. import com.qqflow.engine.domain.system.entity.SysUser;
  9. import com.qqflow.engine.domain.system.service.SysUserService;
  10. import io.swagger.v3.oas.annotations.Operation;
  11. import io.swagger.v3.oas.annotations.tags.Tag;
  12. import jakarta.annotation.Resource;
  13. import jakarta.servlet.http.HttpServletRequest;
  14. import jakarta.validation.Valid;
  15. import org.springframework.web.bind.annotation.*;
  16. import java.util.HashMap;
  17. import java.util.Map;
  18. @Tag(name = "认证管理")
  19. @RestController
  20. @RequestMapping("/auth")
  21. public class AuthController {
  22. @Resource
  23. private SysUserService sysUserService;
  24. @Operation(summary = "用户登录")
  25. @PostMapping("/login")
  26. public Result<Map<String, String>> login(@Valid @RequestBody LoginDTO loginDTO) {
  27. String token = sysUserService.login(loginDTO);
  28. Map<String, String> map = new HashMap<>();
  29. map.put("token", token);
  30. return Result.ok(map);
  31. }
  32. @Operation(summary = "用户登出")
  33. @PostMapping("/logout")
  34. public Result<Void> logout(HttpServletRequest request) {
  35. String token = request.getHeader("Authorization");
  36. sysUserService.logout(token);
  37. return Result.ok();
  38. }
  39. @Operation(summary = "刷新token")
  40. @PostMapping("/refresh")
  41. public Result<Map<String, String>> refresh(HttpServletRequest request) {
  42. String token = request.getHeader("Authorization");
  43. String newToken = sysUserService.refreshToken(token);
  44. Map<String, String> map = new HashMap<>();
  45. map.put("token", newToken);
  46. return Result.ok(map);
  47. }
  48. @Operation(summary = "获取当前登录用户信息")
  49. @GetMapping("/info")
  50. public Result<UserDTO> info() {
  51. LoginUser loginUser = SecurityUtils.getLoginUser();
  52. if (loginUser == null) {
  53. return Result.error(401, "未登录");
  54. }
  55. SysUser user = sysUserService.getByUsername(loginUser.getUsername());
  56. return Result.ok(UserAssembler.toDTO(user));
  57. }
  58. }