538cfb9c5b
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>
42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
/**
|
|
* Default backend base URL — the operator-set fallback used when no specific
|
|
* instance is active. Resolution order:
|
|
*
|
|
* 1. window.__APP_CONFIG__.apiBaseUrl — runtime, injected by the container
|
|
* at start from $PUBLIC_API_BASE_URL (see public/config.js). Lets one
|
|
* prebuilt image point at any backend origin without rebuilding.
|
|
* 2. import.meta.env.PUBLIC_API_BASE_URL — build-time default (rsbuild inlines
|
|
* PUBLIC_* vars). Used in local dev and as a baked fallback.
|
|
* 3. '/api/v1' — same-origin relative path (works behind a reverse proxy).
|
|
*
|
|
* The user's chosen instance still wins over all of these — see
|
|
* runtime-config.ts / instances.ts.
|
|
*/
|
|
function runtimeApiBaseUrl(): string | undefined {
|
|
if (typeof window === 'undefined') return undefined;
|
|
const value = window.__APP_CONFIG__?.apiBaseUrl;
|
|
return value ? value : 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;
|