feat(auth): registration mode on ConnectPage (PUBLIC_ENABLE_REGISTRATION)
Add a login/register toggle to ConnectPage backed by a new useRegisterMutation (register -> /auth/me, mirroring login). The toggle is shown only when REGISTRATION_ENABLED, resolved with the same precedence as the API base URL: runtime window.__APP_CONFIG__ > PUBLIC_ENABLE_REGISTRATION env > default true. The prod runtime-config script injects the runtime flag. The backend's ALLOW_REGISTRATION stays the real authority; this only gates the UI. EN/RU strings added. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -20,3 +20,22 @@ function runtimeApiBaseUrl(): string | undefined {
|
||||
|
||||
export const DEFAULT_API_BASE_URL =
|
||||
runtimeApiBaseUrl() ?? import.meta.env.PUBLIC_API_BASE_URL ?? '/api/v1';
|
||||
|
||||
/**
|
||||
* Whether the public sign-up UI is shown. Same precedence as the base URL:
|
||||
* runtime operator config (injected into `window.__APP_CONFIG__` at container
|
||||
* start) wins over the build-time `PUBLIC_ENABLE_REGISTRATION` env, which
|
||||
* defaults to enabled. This only gates the *UI*; the backend independently
|
||||
* enforces `ALLOW_REGISTRATION` and is the real authority.
|
||||
*/
|
||||
function parseFlag(value: string | undefined): boolean | undefined {
|
||||
if (value == null || value === '') return undefined;
|
||||
return value !== 'false' && value !== '0';
|
||||
}
|
||||
|
||||
export const REGISTRATION_ENABLED: boolean =
|
||||
(typeof window !== 'undefined'
|
||||
? window.__APP_CONFIG__?.enableRegistration
|
||||
: undefined) ??
|
||||
parseFlag(import.meta.env.PUBLIC_ENABLE_REGISTRATION) ??
|
||||
true;
|
||||
|
||||
Reference in New Issue
Block a user