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

github-merge-queue[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git


The following commit(s) were added to refs/heads/main by this push:
     new 17607c5a99 fix(config-service): expose inviteOnly on /config/pre-login 
so INACTIVE users see the registration-request form (#5572)
17607c5a99 is described below

commit 17607c5a99171a636b4fa8336d43b570b0705bc1
Author: ali risheh <[email protected]>
AuthorDate: Wed Jun 10 13:39:19 2026 -0700

    fix(config-service): expose inviteOnly on /config/pre-login so INACTIVE 
users see the registration-request form (#5572)
    
    ### What changes were proposed in this PR?
    
    #5305 moved `GET /config/user-system` from `@PermitAll` to
    `@RolesAllowed("REGULAR", "ADMIN")`. A freshly-registered user is
    `INACTIVE`
    until admin approval, so they cannot reach `@RolesAllowed` endpoints —
    the
    request returns 403/401, `inviteOnly` is left undefined on the frontend,
    the
    registration-request form never appears, and no admin notification email
    is
    sent. In invite-only deployments, new sign-ups are silently dropped.
    
    Per review feedback (@Yicong-Huang), instead of re-opening the whole
    `/config/user-system` endpoint with `@PermitAll`, this PR exposes only
    the
    `inviteOnly` boolean on the already-public `/config/pre-login` and keeps
    `/config/user-system` `@RolesAllowed`. The frontend already loads
    `/config/pre-login` anonymously during APP_INITIALIZER, so `inviteOnly`
    is now
    available before activation without widening the authenticated surface.
    
    <!-- BEFORE & AFTER screenshots to be added. -->
    
    ### Any related issues, documentation, discussions?
    
    Resolves #5587
    
    ### How was this PR tested?
    
    - Updated `ConfigResourceAuthSpec`: `/config/pre-login` exposes exactly
    `{localLogin, googleLogin, defaultLocalUser, attributionEnabled,
    inviteOnly}`
    anonymously; `/config/user-system` returns 401 + `Bearer` challenge
    without a
    token and 200 with a valid Bearer token. `sbt ConfigService/test` → 9
    passed.
    - Verified live on an invite-only deployment: a fresh INACTIVE
    registration
    reads `inviteOnly: true` from `/config/pre-login`, the
    registration-request
      form appears, and the admin notification email is sent, while
      `/config/user-system` still returns 403/401 to anonymous callers.
    
    ### Was this PR authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Code (Claude Opus 4.8)
    
    ---------
    
    Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
---
 .../main/scala/org/apache/texera/service/resource/ConfigResource.scala | 3 ++-
 .../org/apache/texera/service/resource/ConfigResourceAuthSpec.scala    | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git 
a/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
 
b/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
index 2cb951d01e..805ca3cbb5 100644
--- 
a/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
+++ 
b/config-service/src/main/scala/org/apache/texera/service/resource/ConfigResource.scala
@@ -43,7 +43,8 @@ class ConfigResource {
         "username" -> GuiConfig.guiLoginDefaultLocalUserUsername,
         "password" -> GuiConfig.guiLoginDefaultLocalUserPassword
       ),
-      "attributionEnabled" -> GuiConfig.guiAttributionEnabled
+      "attributionEnabled" -> GuiConfig.guiAttributionEnabled,
+      "inviteOnly" -> UserSystemConfig.inviteOnly
     )
 
   @GET
diff --git 
a/config-service/src/test/scala/org/apache/texera/service/resource/ConfigResourceAuthSpec.scala
 
b/config-service/src/test/scala/org/apache/texera/service/resource/ConfigResourceAuthSpec.scala
index da91284334..d5418ea0f7 100644
--- 
a/config-service/src/test/scala/org/apache/texera/service/resource/ConfigResourceAuthSpec.scala
+++ 
b/config-service/src/test/scala/org/apache/texera/service/resource/ConfigResourceAuthSpec.scala
@@ -100,7 +100,8 @@ class ConfigResourceAuthSpec extends AnyFlatSpec with 
Matchers with BeforeAndAft
       "localLogin",
       "googleLogin",
       "defaultLocalUser",
-      "attributionEnabled"
+      "attributionEnabled",
+      "inviteOnly"
     )
   }
 

Reply via email to