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 (

Change Password

Update your password. Ensure it's strong and unique.

setCurrentPassword(e.target.value)} required className="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100" />
setNewPassword(e.target.value)} required className="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100" />
setConfirmNewPassword(e.target.value)} required className="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg focus:outline-none focus:ring-2 focus:ring-primary-500 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100" />
Cambio de contraseña {dialogMessage}
); }; const TenantSettings = () => { return (

Tenant Settings

Configure your organization's settings here.

{/* Settings configuration will be implemented here */}
); }; export default TenantSettings;