This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git


The following commit(s) were added to refs/heads/rocketmq-studio by this push:
     new b10dc557 fix(auth): report runtime login requirement in auth status 
(#1668)
b10dc557 is described below

commit b10dc5578fddafed40aecc09e7377d2b290c9624
Author: youngkermit8-coder <[email protected]>
AuthorDate: Tue Aug 11 20:47:07 2026 +0800

    fix(auth): report runtime login requirement in auth status (#1668)
    
    Signed-off-by: youngkermit8-coder <[email protected]>
---
 .../org/apache/rocketmq/studio/auth/AuthController.java   | 13 ++++++++++++-
 .../apache/rocketmq/studio/auth/AuthControllerTest.java   | 15 +++++++++++++++
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git 
a/server/src/main/java/org/apache/rocketmq/studio/auth/AuthController.java 
b/server/src/main/java/org/apache/rocketmq/studio/auth/AuthController.java
index cda7e036..06298ea9 100644
--- a/server/src/main/java/org/apache/rocketmq/studio/auth/AuthController.java
+++ b/server/src/main/java/org/apache/rocketmq/studio/auth/AuthController.java
@@ -19,6 +19,8 @@ package org.apache.rocketmq.studio.auth;
 
 import org.apache.rocketmq.studio.common.domain.Result;
 import org.apache.rocketmq.studio.common.exception.BusinessException;
+import org.apache.rocketmq.studio.settings.GeneralSettingsVO;
+import org.apache.rocketmq.studio.settings.SettingsRepository;
 import lombok.RequiredArgsConstructor;
 import org.springframework.http.CacheControl;
 import org.springframework.http.HttpHeaders;
@@ -37,12 +39,13 @@ public class AuthController {
 
     private final AuthService authService;
     private final AuthProperties authProperties;
+    private final SettingsRepository settingsRepository;
 
     @GetMapping("/status")
     public ResponseEntity<Result<AuthStatusVO>> status(
             @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = 
false) String authorization) {
         AuthStatusVO status = AuthStatusVO.builder()
-                .loginRequired(authProperties.isLoginRequired())
+                .loginRequired(isLoginRequired())
                 .authenticated(authService.isAuthenticated(authorization))
                 .build();
         return ResponseEntity.ok()
@@ -50,6 +53,14 @@ public class AuthController {
                 .body(Result.ok(status));
     }
 
+    private boolean isLoginRequired() {
+        if (authProperties.isLoginRequired()) {
+            return true;
+        }
+        GeneralSettingsVO settings = settingsRepository.loadGeneralSettings();
+        return settings != null && settings.isRequireLogin();
+    }
+
     @PostMapping("/login")
     public Result<LoginVO> login(@RequestBody(required = false) LoginDTO 
request) {
         if (request == null) {
diff --git 
a/server/src/test/java/org/apache/rocketmq/studio/auth/AuthControllerTest.java 
b/server/src/test/java/org/apache/rocketmq/studio/auth/AuthControllerTest.java
index 44d0fa93..9841825d 100644
--- 
a/server/src/test/java/org/apache/rocketmq/studio/auth/AuthControllerTest.java
+++ 
b/server/src/test/java/org/apache/rocketmq/studio/auth/AuthControllerTest.java
@@ -18,6 +18,7 @@
 package org.apache.rocketmq.studio.auth;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.rocketmq.studio.settings.GeneralSettingsVO;
 import org.apache.rocketmq.studio.settings.SettingsRepository;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -72,6 +73,20 @@ class AuthControllerTest {
                 .andExpect(jsonPath("$.data.authenticated").value(false));
     }
 
+    @Test
+    void statusShouldReportRuntimeLoginProtection() throws Exception {
+        when(authProperties.isLoginRequired()).thenReturn(false);
+        
when(settingsRepository.loadGeneralSettings()).thenReturn(GeneralSettingsVO.builder()
+                .requireLogin(true)
+                .build());
+        when(authService.isAuthenticated(null)).thenReturn(false);
+
+        mockMvc.perform(get("/api/auth/status"))
+                .andExpect(status().isOk())
+                .andExpect(jsonPath("$.data.loginRequired").value(true))
+                .andExpect(jsonPath("$.data.authenticated").value(false));
+    }
+
     @Test
     void statusShouldReportUnauthenticatedWhenTokenIsMissing() throws 
Exception {
         when(authProperties.isLoginRequired()).thenReturn(true);

Reply via email to