import { Box, Typography, Button, Dialog, DialogTitle, DialogContent, TextField, DialogActions, IconButton, } from '@mui/material'; import { useTranslation } from 'react-i18next'; import { useState, useEffect } from 'react'; import { CloseCircle, Refresh } from 'iconsax-react'; import { PasswordValidationItem } from './PasswordValidation'; import { Toast } from '@/components/Toast'; import Logo from '@/components/Logo'; import { CardContainer } from '@/components/CardContainer'; export function UserSecurity() { const { t } = useTranslation('security'); const [open, setOpen] = useState(false); const [password, setPassword] = useState(''); const [confirmPassword, setConfirmPassword] = useState(''); const [showValidation, setShowValidation] = useState(false); const [showPasswordAlert, setShowPasswordAlert] = useState(false); const [changePassword, setChangePassword] = useState(false); const [loading, setLoading] = useState(false); const hasNumber = /\d/.test(password); const hasMinLength = password.length >= 8; const hasUpperAndLower = /[A-Z]/.test(password) && /[a-z]/.test(password); const hasSpecialChar = /[!@#$%^&*]/.test(password); const validPassword = hasNumber && hasMinLength && hasUpperAndLower && hasSpecialChar; const matchPassword = password === confirmPassword; const handleOpen = () => setOpen(true); const handleClose = () => setOpen(false); const handleShowAlert = () => { setLoading(true); setTimeout(() => { setLoading(false); setShowPasswordAlert(true); setChangePassword(true); handleClose(); setPassword(''); setConfirmPassword(''); }, 1500); }; useEffect(() => { if (password) { if (!validPassword) { setShowValidation(true); } else { const timer = setTimeout(() => setShowValidation(false), 1000); return () => clearTimeout(timer); } } else { setShowValidation(false); } }, [password, validPassword]); return ( {t('securityForm.addPassword')} } > {changePassword ? ( رمز عبور فعال است آخرین تغییر چند ثانیه پیش ) : ( {t('securityForm.notDeterminedPassword')} )} {t('securityForm.addPassword')} setPassword(e.target.value)} sx={{ '& .MuiOutlinedInput-root': { borderRadius: 2, }, }} /> {password && showValidation && ( )} setConfirmPassword(e.target.value)} error={confirmPassword.length > 0 && !matchPassword} helperText={ confirmPassword.length > 0 && !matchPassword ? t('securityForm.notCompatibility') : ' ' } sx={{ '& .MuiOutlinedInput-root': { borderRadius: 2, }, }} /> setShowPasswordAlert(false)} > {t('securityForm.alertSuccess')} ); }