mirror of
https://github.com/shuaiplus/nodewarden.git
synced 2026-06-20 13:00:39 +00:00
feat: add registration invite code handling and improve error translations
- Updated AuthViews component to conditionally show invite code field based on registrationInviteRequired prop. - Enhanced error handling in auth API functions to use translateServerError for better user feedback. - Added new translations for various server error messages in English, Spanish, Russian, Chinese (Simplified and Traditional). - Modified demo initial bootstrap state to include registrationInviteRequired flag. - Updated types to include registrationInviteRequired in WebBootstrapResponse.
This commit is contained in:
@@ -171,6 +171,7 @@ export default function App() {
|
||||
const [session, setSessionState] = useState<SessionState | null>(initialBootstrap.session);
|
||||
const [profile, setProfile] = useState<Profile | null>(initialProfileSnapshot);
|
||||
const [defaultKdfIterations, setDefaultKdfIterations] = useState(initialBootstrap.defaultKdfIterations);
|
||||
const [registrationInviteRequired, setRegistrationInviteRequired] = useState(initialBootstrap.registrationInviteRequired);
|
||||
const [jwtWarning, setJwtWarning] = useState<{ reason: JwtUnsafeReason; minLength: number } | null>(initialBootstrap.jwtWarning);
|
||||
|
||||
const [loginValues, setLoginValues] = useState({ email: '', password: '' });
|
||||
@@ -413,6 +414,7 @@ export default function App() {
|
||||
const normalizedCurrentHashPath = currentHashPath.replace(/^\/+/, '').replace(/\/+$/, '');
|
||||
const isDemoPublicSendRoute = /^send\/[^/]+(?:\/[^/]+)?$/i.test(normalizedCurrentHashPath);
|
||||
setDefaultKdfIterations(initialBootstrap.defaultKdfIterations);
|
||||
setRegistrationInviteRequired(initialBootstrap.registrationInviteRequired);
|
||||
setJwtWarning(null);
|
||||
setSession(null);
|
||||
setProfile(null);
|
||||
@@ -427,6 +429,7 @@ export default function App() {
|
||||
const boot = await bootstrapAppSession(initialBootstrap);
|
||||
if (!mounted) return;
|
||||
setDefaultKdfIterations(boot.defaultKdfIterations);
|
||||
setRegistrationInviteRequired(boot.registrationInviteRequired);
|
||||
setJwtWarning(boot.jwtWarning);
|
||||
setSession(boot.session);
|
||||
setProfile(boot.profile);
|
||||
@@ -1408,6 +1411,12 @@ export default function App() {
|
||||
if (phase === 'app' && location === '/' && !isPublicSendRoute) navigate('/vault');
|
||||
}, [phase, location, isPublicSendRoute, navigate]);
|
||||
|
||||
useEffect(() => {
|
||||
if (phase === 'register' && (location === '/' || location === '/login') && !isPublicSendRoute) {
|
||||
navigate('/register');
|
||||
}
|
||||
}, [phase, location, isPublicSendRoute, navigate]);
|
||||
|
||||
useEffect(() => {
|
||||
if (phase === 'app' && isImportHashRoute && location !== IMPORT_ROUTE) {
|
||||
navigate(IMPORT_ROUTE);
|
||||
@@ -1605,6 +1614,7 @@ export default function App() {
|
||||
unlockPreparing={unlockPreparing}
|
||||
loginValues={loginValues}
|
||||
registerValues={registerValues}
|
||||
registrationInviteRequired={registrationInviteRequired}
|
||||
unlockPassword={unlockPassword}
|
||||
emailForLock={profile?.email || session?.email || ''}
|
||||
loginHintLoading={loginHintState.loading}
|
||||
|
||||
Reference in New Issue
Block a user