fix(auth): expose register_enabled in /api/status and gate sign-up link on login page - #4871
Conversation
/api/status never returned `register_enabled` or `password_register_enabled`, so the sign-in page had no way to react when an admin disabled registration. The "Sign up" link was only gated on `self_use_mode_enabled`, which is a separate and unrelated concept (single-user vs. multi-user deployment). Result: toggling "Registration Enabled" in admin settings had no visible effect on the login page — users could still see the sign-up link even when registration was disabled, and could not see it even when it was enabled (if the system happened to be in self-use mode from initial setup). Fix: - Add `register_enabled` and `password_register_enabled` to GetStatus() - Gate the "Sign up" link on `register_enabled !== false` in addition to the existing `!self_use_mode_enabled` check Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
WalkthroughThe backend status endpoint now exposes two registration configuration fields to clients. The frontend sign-in screen uses one of these fields to conditionally show the signup prompt, restricting visibility when registration is disabled on the server. ChangesRegistration Configuration
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Tip 💬 Introducing Slack Agent: The best way for teams to turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Calcium-Ion
left a comment
There was a problem hiding this comment.
Approving. Root cause and impact analysis are accurate:
/api/statuspreviously omittedregister_enabled/password_register_enabled, while the default frontend types already declared them, so they were silentlyundefined.- Gating the sign-up link on
self_use_mode_enabledalone created two real dead-ends (registration disabled + link visible, registration enabled + link hidden under self-use).
Backend additions in controller/misc.go and the corresponding gate in web/default/src/features/auth/sign-in/index.tsx are minimal and consistent.
…nk (QuantumNous#4871) /api/status never returned `register_enabled` or `password_register_enabled`, so the sign-in page had no way to react when an admin disabled registration. The "Sign up" link was only gated on `self_use_mode_enabled`, which is a separate and unrelated concept (single-user vs. multi-user deployment). Result: toggling "Registration Enabled" in admin settings had no visible effect on the login page — users could still see the sign-up link even when registration was disabled, and could not see it even when it was enabled (if the system happened to be in self-use mode from initial setup). Fix: - Add `register_enabled` and `password_register_enabled` to GetStatus() - Gate the "Sign up" link on `register_enabled !== false` in addition to the existing `!self_use_mode_enabled` check Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Range: 18282e6..3b9ed0a8 (upstream/main as of fetch) Highlights: - feat: support request_header key source (QuantumNous#4903) - feat: Waffo Pancake gateway + admin catalog binding (QuantumNous#4935) - perf: optimize request metadata extraction, drop dead batch helpers in relay/channel/openai/helper.go (QuantumNous#5009) - perf: reduce heap residency for large base64 relay requests - fix(channel): evict auto-disabled multi-key channels from cache (QuantumNous#4983) - fix: resolve model owned_by from active channels (QuantumNous#4416) — introduces channelOwnerName/getPreferredModelOwners/buildOpenAIModel + ListModels refactor - fix: GetAllChannels respects group filter (QuantumNous#4847, QuantumNous#4885) - fix(auth): expose register_enabled, aff_code, localize reset (QuantumNous#4871, QuantumNous#4945, QuantumNous#4769) - fix(webhook): processing + Waffo subscription compliance (QuantumNous#5047, QuantumNous#5038) - refactor(ui): system settings drill-in sidebar + log filter responsiveness Conflicts resolved: - controller/model.go: kept local hiddenMappedModels filter (resolveAccessibleModelGroups + getHiddenMappedModelNamesForGroups) on top of upstream's ListModels refactor; adopted upstream channelOwnerName helper. - relay/channel/openai/helper.go: adopted upstream (HEAD's processChatCompletions/processCompletions were dead code after upstream's perf refactor in QuantumNous#5009). Local patches verified intact: Username + fillTopUpUsernames (model/topup.go, locked by topup_username_test.go), HideUpstreamErrors, Claude developer-role normalization, Gemini role fallback, Model Chat header nav entry, channel affinity auto-clear. Note: go build not run (no Go toolchain in this environment); CI to verify. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
…nk (QuantumNous#4871) /api/status never returned `register_enabled` or `password_register_enabled`, so the sign-in page had no way to react when an admin disabled registration. The "Sign up" link was only gated on `self_use_mode_enabled`, which is a separate and unrelated concept (single-user vs. multi-user deployment). Result: toggling "Registration Enabled" in admin settings had no visible effect on the login page — users could still see the sign-up link even when registration was disabled, and could not see it even when it was enabled (if the system happened to be in self-use mode from initial setup). Fix: - Add `register_enabled` and `password_register_enabled` to GetStatus() - Gate the "Sign up" link on `register_enabled !== false` in addition to the existing `!self_use_mode_enabled` check Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sync upstream QuantumNous/new-api, backend parts only: - QuantumNous#4871 (b397c58): add register_enabled/password_register_enabled to GetStatus so the login page can react to admin registration toggle - QuantumNous#4823 (032993e): add "slate" to validColors so it is not rejected Skipped the web/default (new UI) frontend parts of both commits.
…nk (QuantumNous#4871) /api/status never returned `register_enabled` or `password_register_enabled`, so the sign-in page had no way to react when an admin disabled registration. The "Sign up" link was only gated on `self_use_mode_enabled`, which is a separate and unrelated concept (single-user vs. multi-user deployment). Result: toggling "Registration Enabled" in admin settings had no visible effect on the login page — users could still see the sign-up link even when registration was disabled, and could not see it even when it was enabled (if the system happened to be in self-use mode from initial setup). Fix: - Add `register_enabled` and `password_register_enabled` to GetStatus() - Gate the "Sign up" link on `register_enabled !== false` in addition to the existing `!self_use_mode_enabled` check Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…nk (QuantumNous#4871) /api/status never returned `register_enabled` or `password_register_enabled`, so the sign-in page had no way to react when an admin disabled registration. The "Sign up" link was only gated on `self_use_mode_enabled`, which is a separate and unrelated concept (single-user vs. multi-user deployment). Result: toggling "Registration Enabled" in admin settings had no visible effect on the login page — users could still see the sign-up link even when registration was disabled, and could not see it even when it was enabled (if the system happened to be in self-use mode from initial setup). Fix: - Add `register_enabled` and `password_register_enabled` to GetStatus() - Gate the "Sign up" link on `register_enabled !== false` in addition to the existing `!self_use_mode_enabled` check Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
…nk (QuantumNous#4871) /api/status never returned `register_enabled` or `password_register_enabled`, so the sign-in page had no way to react when an admin disabled registration. The "Sign up" link was only gated on `self_use_mode_enabled`, which is a separate and unrelated concept (single-user vs. multi-user deployment). Result: toggling "Registration Enabled" in admin settings had no visible effect on the login page — users could still see the sign-up link even when registration was disabled, and could not see it even when it was enabled (if the system happened to be in self-use mode from initial setup). Fix: - Add `register_enabled` and `password_register_enabled` to GetStatus() - Gate the "Sign up" link on `register_enabled !== false` in addition to the existing `!self_use_mode_enabled` check Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Problem
/api/statusnever returnedregister_enabledorpassword_register_enabled, so the sign-in page could not react when an admin toggled the Registration Enabled setting in the admin panel.The "Sign up" link on the login page was only gated on
self_use_mode_enabled— a separate and unrelated concept (single-user self-hosted mode vs. multi-user deployment). This creates two concrete bugs:RegisterEnabled = falsebutSelfUseModeEnabled = false, the "Sign up" link is shown. Users reach the sign-up page, fill in the form, and get a backend error — a confusing dead end.RegisterEnabled = truebutSelfUseModeEnabled = true(common after the setup wizard selects self-use mode), the link is permanently hidden regardless of the admin setting.Root Cause
controller/misc.go→GetStatus()builds the/api/statuspayload but omitsregister_enabledandpassword_register_enabled. The frontend type definitions (features/auth/types.ts) already declare these fields, but since the backend never sends them, they are alwaysundefinedat runtime and the sign-in page cannot use them.Fix
controller/misc.go— expose two fields in the status response:web/default/src/features/auth/sign-in/index.tsx— gate the Sign Up link on both settings:!== false(rather than=== true) keeps the link visible for any client that has not yet received the new field (e.g. cached status), preserving backward compatibility.Checklist
register_enabledandpassword_register_enablednow included in/api/statusregister_enabledwhen deciding whether to show the Sign Up link🤖 Generated with Claude Code
Summary by CodeRabbit
Bug Fixes