import { useState } from 'react'; import type { FormEvent } from 'react'; import { useNavigate } from 'react-router'; import { useAuth } from '../auth/AuthContext'; import { Alert, errorMessage } from '../components/Feedback'; import { Icon } from '../components/Icon'; export function ChangePasswordPage() { const { user, changePassword, logout } = useAuth(); const navigate = useNavigate(); const [currentPassword, setCurrentPassword] = useState(''); const [newPassword, setNewPassword] = useState(''); const [confirmation, setConfirmation] = useState(''); const [error, setError] = useState(''); const [submitting, setSubmitting] = useState(false); const submit = async (event: FormEvent) => { event.preventDefault(); setError(''); if (newPassword !== confirmation) return setError('Las contraseñas nuevas no coinciden'); if (newPassword.length < 12) return setError('La nueva contraseña debe tener al menos 12 caracteres'); setSubmitting(true); try { await changePassword(currentPassword, newPassword); navigate('/', { replace: true }); } catch (requestError) { setError(errorMessage(requestError)); } finally { setSubmitting(false); } }; const leave = async () => { await logout().catch(() => undefined); navigate('/login', { replace: true }); }; return (
SEGURIDAD DE CUENTA

{user?.mustChangePassword ? 'Cambiá tu contraseña temporal' : 'Cambiar contraseña'}

Usá al menos 12 caracteres. Las demás sesiones abiertas se cerrarán automáticamente.

{error && {error}}
); }