Browse Source

调整权限认证开关

调整人员接口
master
白凤吉 6 months ago
parent
commit
849cea9505
  1. 5
      src/main/java/com/qyft/gd/system/controller/AuthController.java
  2. 35
      src/main/java/com/qyft/gd/system/controller/UserController.java
  3. 18
      src/main/java/com/qyft/gd/system/filter/JwtAuthenticationFilter.java
  4. 14
      src/main/java/com/qyft/gd/system/model/entity/Role.java

5
src/main/java/com/qyft/gd/system/controller/AuthController.java

@ -1,5 +1,6 @@
package com.qyft.gd.system.controller;
import com.qyft.gd.system.common.enums.DeletedEnum;
import com.qyft.gd.system.common.result.Result;
import com.qyft.gd.system.common.result.ResultCode;
import com.qyft.gd.system.common.utils.JwtUtil;
@ -15,6 +16,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Objects;
/**
* 认证控制
*/
@ -35,7 +38,7 @@ public class AuthController {
) {
// 查找用户
User user = userService.findByUsername(username);
if (user != null && user.getPassword().equals(password)) {
if (user != null && !Objects.equals(user.getIsDeleted(), DeletedEnum.ENABLE.getValue()) && user.getPassword().equals(password)) {
String token = JwtUtil.createJWE(user.getUsername());
return Result.success("Bearer " + token);
}

35
src/main/java/com/qyft/gd/system/controller/UserController.java

@ -5,10 +5,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qyft.gd.system.common.base.BasePageQuery;
import com.qyft.gd.system.common.result.PageResult;
import com.qyft.gd.system.common.result.Result;
import com.qyft.gd.system.common.result.ResultCode;
import com.qyft.gd.system.common.utils.JwtUtil;
import com.qyft.gd.system.model.entity.User;
import com.qyft.gd.system.service.UserService;
import io.jsonwebtoken.Claims;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
@ -31,13 +35,38 @@ public class UserController {
@Operation(summary = "添加新用户")
@PostMapping("/")
public Result<String> addUser(@RequestBody User user) {
boolean isSuccess = userService.addUser(user);
if (isSuccess) {
return Result.success();
User existingUser = userService.findByUsername(user.getUsername());
if(existingUser == null) {
boolean isSuccess = userService.addUser(user);
if (isSuccess) {
return Result.success();
}
}else{
return Result.failed(ResultCode.USERNAME_ALREADY_EXISTS);
}
return Result.failed();
}
@Operation(summary = "当前用户信息")
@GetMapping("/current")
public Result<User> currentUser(HttpServletRequest request) {
String token = (String) request.getAttribute("token");
if (token == null || token.isEmpty()) {
return Result.failed();
}
try {
Claims claims = JwtUtil.parseJWE(token);
String username = claims.getSubject();
User user = userService.findByUsername(username);
if (user == null) {
return Result.failed();
}
return Result.success(user);
} catch (Exception e) {
return Result.failed();
}
}
@Operation(summary = "更新用户信息")
@PutMapping("/{id}")
public Result<String> updateUser(@PathVariable Long id, @RequestBody User user) {

18
src/main/java/com/qyft/gd/system/filter/JwtAuthenticationFilter.java

@ -21,15 +21,15 @@ public class JwtAuthenticationFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if(jwtEnabled){
String token = getTokenFromRequest(request);
if (shouldBypass(request)) {
filterChain.doFilter(request, response);
return;
}
if (token != null && JwtUtil.parseJWE(token) != null) {
request.setAttribute("token", token); // 可以将 token 存储在 request 属性中供后续使用
} else {
String token = getTokenFromRequest(request);
if (shouldBypass(request)) {
filterChain.doFilter(request, response);
return;
}
if (token != null && JwtUtil.parseJWE(token) != null) {
request.setAttribute("token", token); // 可以将 token 存储在 request 属性中供后续使用
} else {
if (jwtEnabled) {
ResponseUtils.writeErrMsg(response, ResultCode.ACCESS_TOKEN_INVALID);
return;
}

14
src/main/java/com/qyft/gd/system/model/entity/Role.java

@ -2,29 +2,23 @@ package com.qyft.gd.system.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qyft.gd.system.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;
/**
* 角色实体
*/
@Schema(description = "角色信息")
@TableName("sys_role")
@Getter
@Setter
public class Role extends BaseEntity {
/**
* 角色名称
*/
@Schema(description = "角色名称")
private String name;
/**
* 角色编码
*/
@Schema(description = "角色编码")
private String code;
/**
* 是否删除(0- 1-)
*/
private Integer isDeleted;
}
Loading…
Cancel
Save