feat(auth): registration mode on ConnectPage (PUBLIC_ENABLE_REGISTRATION)
Docker Build & Publish / build (push) Failing after 1m42s
Docker Build & Publish / push (push) Has been skipped
Docker Build & Publish / Prune old image versions (push) Has been skipped

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:
Senko-san
2026-06-10 14:07:07 +03:00
parent 2ad3b128d6
commit 538cfb9c5b
9 changed files with 206 additions and 15 deletions
+17 -2
View File
@@ -31,16 +31,29 @@ const en = {
forgetTitle: 'Forget this instance',
form: {
title: 'Connect to a backend',
registerTitle: 'Create an account',
serverUrl: 'Server URL',
username: 'Username',
password: 'Password',
passwordHint: 'At least 8 characters.',
submit: 'Connect',
submitting: 'Connecting…',
registerSubmit: 'Create account',
registering: 'Creating account…',
noAccount: "Don't have an account?",
registerLink: 'Sign up',
haveAccount: 'Already have an account?',
signInLink: 'Sign in',
},
errors: {
unreachable: "Can't reach this server. Check the URL and that it's online.",
unreachable:
"Can't reach this server. Check the URL and that it's online.",
badCredentials: 'Incorrect username or password.',
generic: 'Sign-in failed. Please try again.',
usernameTaken: 'That username is already taken.',
passwordTooShort: 'Password must be at least 8 characters.',
registrationDisabled: 'Registration is disabled on this server.',
registerFailed: 'Could not create the account. Please try again.',
},
},
library: {
@@ -211,6 +224,8 @@ const en = {
export default en;
type DeepString<T> = {
[K in keyof T]: T[K] extends Record<string, unknown> ? DeepString<T[K]> : string;
[K in keyof T]: T[K] extends Record<string, unknown>
? DeepString<T[K]>
: string;
};
export type Translations = DeepString<typeof en>;