diff --git a/frontend/src/features/auth/SetupAndAuthView.tsx b/frontend/src/features/auth/SetupAndAuthView.tsx index ccd2541..1c26b27 100644 --- a/frontend/src/features/auth/SetupAndAuthView.tsx +++ b/frontend/src/features/auth/SetupAndAuthView.tsx @@ -27,6 +27,7 @@ export const SetupAndAuthView: React.FC = ({ const [setupName, setSetupName] = useState(''); const [setupEmail, setSetupEmail] = useState(''); const [setupPassword, setSetupPassword] = useState(''); + const [setupPasswordConfirm, setSetupPasswordConfirm] = useState(''); const [instanceName, setInstanceName] = useState(authStatus.instanceName || 'MindSift'); const [sharingMode, setSharingMode] = useState<'open' | 'teams_only' | 'strict_private'>( 'teams_only' @@ -47,6 +48,13 @@ export const SetupAndAuthView: React.FC = ({ const handleCompleteSetup = async (e: React.FormEvent) => { e.preventDefault(); setError(null); + + if (setupPassword !== setupPasswordConfirm) { + setError('Die eingegebenen Passwörter stimmen nicht überein.'); + triggerHaptic(25); + return; + } + setSubmitting(true); triggerHaptic(15); try { @@ -170,17 +178,40 @@ export const SetupAndAuthView: React.FC = ({ -
- - setSetupPassword(e.target.value)} - placeholder="Mindestens 4 Zeichen" - minLength={4} - required - className="w-full h-8 px-2.5 input-field" - /> +
+
+ + setSetupPassword(e.target.value)} + placeholder="Mindestens 4 Zeichen" + minLength={4} + required + className="w-full h-8 px-2.5 input-field" + /> +
+
+ + setSetupPasswordConfirm(e.target.value)} + placeholder="Passwort erneut eingeben" + minLength={4} + required + className={`w-full h-8 px-2.5 input-field ${ + setupPasswordConfirm && setupPassword !== setupPasswordConfirm + ? 'border-status-err focus:border-status-err' + : '' + }`} + /> + {setupPasswordConfirm && setupPassword !== setupPasswordConfirm && ( + + Passwörter stimmen nicht überein + + )} +