From 921f4958a36060b0f3a98fcadf6935187370a66e Mon Sep 17 00:00:00 2001 From: let5sne Date: Tue, 14 Jul 2026 08:35:35 +0800 Subject: [PATCH] fix(aihr): require login for practice api --- .../aihr/controller/AihrPracticeController.java | 2 ++ .../aihr/service/AihrPracticeSeedServiceTest.java | 12 ++++++++++++ scripts/demo-check.sh | 1 + 3 files changed, 15 insertions(+) diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java index d5bc73e3..5056a679 100644 --- a/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java +++ b/backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java @@ -1,6 +1,7 @@ package org.dromara.aihr.controller; import cn.dev33.satoken.annotation.SaCheckRole; +import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaMode; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -50,6 +51,7 @@ import java.util.List; @RequiredArgsConstructor @RestController @RequestMapping("/api/train/practice") +@SaCheckLogin public class AihrPracticeController { private static final String HR_OPERATOR_ROLE = "hr_operator"; diff --git a/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java index 908eee29..1637af06 100644 --- a/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java +++ b/backend/ruoyi-modules/ruoyi-aihr/src/test/java/org/dromara/aihr/service/AihrPracticeSeedServiceTest.java @@ -365,6 +365,18 @@ public class AihrPracticeSeedServiceTest { assertFalse(controllerSource.contains("supervisor H5 keeps team-scope")); } + @Test + public void practiceControllerRequiresLoginBeforeSessionCreation() throws Exception { + Path source = Path.of("src/main/java/org/dromara/aihr/controller/AihrPracticeController.java"); + if (!Files.exists(source)) { + source = Path.of("ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java"); + } + String controllerSource = Files.readString(source); + + assertTrue(controllerSource.contains("import cn.dev33.satoken.annotation.SaCheckLogin;")); + assertTrue(controllerSource.contains("@SaCheckLogin\npublic class AihrPracticeController")); + } + @Test public void assignmentsSelfReadBypassesTeamScope() { AssignmentJdbcTemplate jdbcTemplate = new AssignmentJdbcTemplate(null, List.of()); diff --git a/scripts/demo-check.sh b/scripts/demo-check.sh index e5292735..81a3229e 100755 --- a/scripts/demo-check.sh +++ b/scripts/demo-check.sh @@ -381,6 +381,7 @@ contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/service contains frontend/src/api/aihr/practice.ts "/api/train/practice/start" contains frontend/src/api/aihr/practice.ts "/api/aihr/prompt-templates" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java "/api/train/practice" +contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java "@SaCheckLogin" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPracticeController.java "sessions/{sessionId}/annotations" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPromptTemplateController.java "/api/aihr/prompt-templates" contains backend/ruoyi-modules/ruoyi-aihr/src/main/java/org/dromara/aihr/controller/AihrPromptTemplateController.java "public R> list"