From aed4c602966fc71b18eedf0d0943cc5dc7bb1f42 Mon Sep 17 00:00:00 2001 From: none Date: Fri, 17 Feb 2023 14:15:50 +0800 Subject: [PATCH] =?UTF-8?q?added:=20=E7=AE=A1=E7=90=86=E5=91=98=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E7=9A=84=E6=8B=A6=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xyz/playedu/api/PlayEduThreadLocal.java | 10 +++++++++ .../controller/backend/LoginController.java | 1 - .../api/middleware/AdminAuthMiddleware.java | 21 +++++++++++++++---- .../playedu/api/service/AdminUserService.java | 2 ++ .../service/impl/AdminUserServiceImpl.java | 6 ++++++ 5 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/main/java/xyz/playedu/api/PlayEduThreadLocal.java b/src/main/java/xyz/playedu/api/PlayEduThreadLocal.java index b12b6dc..fead5dc 100644 --- a/src/main/java/xyz/playedu/api/PlayEduThreadLocal.java +++ b/src/main/java/xyz/playedu/api/PlayEduThreadLocal.java @@ -1,5 +1,7 @@ package xyz.playedu.api; +import xyz.playedu.api.domain.AdminUser; + import java.util.LinkedHashMap; public class PlayEduThreadLocal { @@ -37,6 +39,14 @@ public class PlayEduThreadLocal { put("admin_user_id", userId); } + public static AdminUser getAdminUser() { + return (AdminUser) get("admin_user"); + } + + public static void setAdminUser(AdminUser adminUser) { + put("admin_user", adminUser); + } + public static void remove() { THREAD_LOCAL.remove(); } diff --git a/src/main/java/xyz/playedu/api/controller/backend/LoginController.java b/src/main/java/xyz/playedu/api/controller/backend/LoginController.java index 2a55dd2..05d846c 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/LoginController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/LoginController.java @@ -61,7 +61,6 @@ public class LoginController { public JsonResponse logout() throws JwtLogoutException { jwtService.logout(RequestUtil.token(), SystemConstant.JWT_PRV_ADMIN_USER); return JsonResponse.success("success"); - } } diff --git a/src/main/java/xyz/playedu/api/middleware/AdminAuthMiddleware.java b/src/main/java/xyz/playedu/api/middleware/AdminAuthMiddleware.java index f5df9f2..c21b627 100644 --- a/src/main/java/xyz/playedu/api/middleware/AdminAuthMiddleware.java +++ b/src/main/java/xyz/playedu/api/middleware/AdminAuthMiddleware.java @@ -10,6 +10,8 @@ import org.springframework.web.servlet.HandlerInterceptor; import xyz.playedu.api.PlayEduThreadLocal; import xyz.playedu.api.bus.BackendBus; import xyz.playedu.api.constant.SystemConstant; +import xyz.playedu.api.domain.AdminUser; +import xyz.playedu.api.service.AdminUserService; import xyz.playedu.api.service.JWTService; import xyz.playedu.api.types.JWTPayload; import xyz.playedu.api.types.JsonResponse; @@ -24,6 +26,9 @@ public class AdminAuthMiddleware implements HandlerInterceptor { @Autowired private JWTService jwtService; + @Autowired + private AdminUserService adminUserService; + @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (BackendBus.inUnAuthWhitelist(request.getRequestURI())) { @@ -32,15 +37,22 @@ public class AdminAuthMiddleware implements HandlerInterceptor { String token = RequestUtil.token(); if (token.length() == 0) { - responseTransform(response, 401, "请登录"); - return false; + return responseTransform(response, 401, "请登录"); } try { JWTPayload payload = jwtService.parse(token, SystemConstant.JWT_PRV_ADMIN_USER); - // 用户信息写入context + AdminUser adminUser = adminUserService.findById(payload.getSub()); + if (adminUser == null) { + return responseTransform(response, 404, "管理员不存在"); + } + if (adminUser.getIsBanLogin() == 1) { + return responseTransform(response, 403, "当前管理员禁止登录"); + } + PlayEduThreadLocal.setAdminUserId(payload.getSub()); + PlayEduThreadLocal.setAdminUser(adminUser); return HandlerInterceptor.super.preHandle(request, response, handler); } catch (Exception e) { @@ -49,10 +61,11 @@ public class AdminAuthMiddleware implements HandlerInterceptor { } } - private void responseTransform(HttpServletResponse response, int code, String msg) throws IOException { + private boolean responseTransform(HttpServletResponse response, int code, String msg) throws IOException { response.setStatus(code); response.setContentType("application/json;charset=utf-8"); response.getWriter().print(JSON.toJSONString(JsonResponse.error(msg))); + return false; } @Override diff --git a/src/main/java/xyz/playedu/api/service/AdminUserService.java b/src/main/java/xyz/playedu/api/service/AdminUserService.java index 0d5ead4..9610918 100644 --- a/src/main/java/xyz/playedu/api/service/AdminUserService.java +++ b/src/main/java/xyz/playedu/api/service/AdminUserService.java @@ -14,4 +14,6 @@ public interface AdminUserService extends IService { PaginationResult paginate(int page, int size, Wrapper queryWrapper); AdminUser findByEmail(String email); + + AdminUser findById(Integer id); } diff --git a/src/main/java/xyz/playedu/api/service/impl/AdminUserServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/AdminUserServiceImpl.java index 0c4d57c..5d524fa 100644 --- a/src/main/java/xyz/playedu/api/service/impl/AdminUserServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/AdminUserServiceImpl.java @@ -37,6 +37,12 @@ public class AdminUserServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("id", id); + return this.getBaseMapper().selectOne(queryWrapper); + } }