// static/js/user.Profile.jsx function UserProfile() { const { user, setUser, token, setView } = useContext(AuthContext); const [email, setEmail] = useState(user ? user.email : ""); const [firstName, setFirstName] = useState(user ? user.first_name : ""); const [lastName, setLastName] = useState(user ? user.last_name : ""); const [savingProfile, setSavingProfile] = useState(false); const [oldPassword, setOldPassword] = useState(""); const [newPassword, setNewPassword] = useState(""); const [newPassword2, setNewPassword2] = useState(""); const [savingPassword, setSavingPassword] = useState(false); useEffect(() => { if (user) { setEmail(user.email || ""); setFirstName(user.first_name || ""); setLastName(user.last_name || ""); } }, [user]); const handleSaveProfile = async () => { setSavingProfile(true); try { const updatedUser = await API.updateProfile(token, { email, first_name: firstName, last_name: lastName, }); setUser(updatedUser); alert("Профиль обновлен"); } catch (e) { alert(e.message); } finally { setSavingProfile(false); } }; const handleChangePassword = async () => { if (!oldPassword || !newPassword || !newPassword2) { alert("Заполните все поля для смены пароля"); return; } if (newPassword !== newPassword2) { alert("Новый пароль и его подтверждение не совпадают"); return; } if (newPassword.length < 6) { alert("Новый пароль должен быть не короче 6 символов"); return; } setSavingPassword(true); try { await API.changePassword(token, { old_password: oldPassword, new_password: newPassword, }); alert("Пароль успешно изменён"); setOldPassword(""); setNewPassword(""); setNewPassword2(""); } catch (e) { alert(e.message); } finally { setSavingPassword(false); } }; if (!user) { return (
Нет данных пользователя. Попробуйте заново войти в систему.
); } return (

Профиль

{/* Личные данные */}

Личные данные

setFirstName(e.target.value)} />
setLastName(e.target.value)} />
setEmail(e.target.value)} />
{/* Смена пароля */}

Смена пароля

setOldPassword(e.target.value)} />
setNewPassword(e.target.value)} />
setNewPassword2(e.target.value)} />
); }