import React, { useState, FormEvent } from 'react'; import { changeUserPassword } from '../../services/api'; import logger from '../../utils/logger'; import { Button, Dialog, DialogTitle, DialogContent, DialogActions, Alert, } from '@mui/material'; const ChangePasswordForm = () => { const [currentPassword, setCurrentPassword] = useState(''); const [newPassword, setNewPassword] = useState(''); const [confirmNewPassword, setConfirmNewPassword] = useState(''); const [isLoading, setIsLoading] = useState(false); const [dialogOpen, setDialogOpen] = useState(false); const [dialogMessage, setDialogMessage] = useState(''); const [dialogSeverity, setDialogSeverity] = useState<'success' | 'error'>('success'); const handleSubmit = async (e: FormEvent) => { e.preventDefault(); if (newPassword !== confirmNewPassword) { setDialogMessage('Las contraseñas nuevas no coinciden.'); setDialogSeverity('error'); setDialogOpen(true); return; } if (newPassword.length < 6) { setDialogMessage('La nueva contraseña debe tener al menos 6 caracteres.'); setDialogSeverity('error'); setDialogOpen(true); return; } setIsLoading(true); try { await changeUserPassword({ currentPassword, newPassword }); setDialogMessage('¡Contraseña cambiada exitosamente!'); setDialogSeverity('success'); setDialogOpen(true); setCurrentPassword(''); setNewPassword(''); setConfirmNewPassword(''); } catch (error: any) { logger.error('Error changing password:', error); // Detectar si es un error de contraseña incorrecta const errorMessage = error.response?.data?.message || error.message || 'Error al cambiar la contraseña.'; if (error.response?.status === 401 || errorMessage.toLowerCase().includes('incorrect') || errorMessage.toLowerCase().includes('incorrecta') || errorMessage.toLowerCase().includes('wrong')) { setDialogMessage('La contraseña actual es incorrecta.'); } else { setDialogMessage(errorMessage); } setDialogSeverity('error'); setDialogOpen(true); } finally { setIsLoading(false); } }; const handleCloseDialog = () => { setDialogOpen(false); }; return (
Update your password. Ensure it's strong and unique.
Configure your organization's settings here.
{/* Settings configuration will be implemented here */}