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);