NoteJS/public/profile.html
Fovway 155f4303d5 Добавлена функция удаления аккаунта пользователя
- Реализован новый API-эндпоинт для удаления аккаунта с подтверждением пароля.
- Добавлено модальное окно для подтверждения удаления аккаунта на странице профиля.
- Обновлены стили и логика для предпросмотра заметок с учетом текущей темы.
- Улучшены обработчики событий для кнопки удаления аккаунта и модального окна.
2025-10-28 01:03:16 +07:00

261 lines
8.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"
/>
<title>Личный кабинет - NoteJS</title>
<!-- Предотвращение мерцания темы -->
<script>
(function () {
try {
const savedTheme = localStorage.getItem("theme");
const systemPrefersDark = window.matchMedia(
"(prefers-color-scheme: dark)"
).matches;
const theme = savedTheme || (systemPrefersDark ? "dark" : "light");
if (theme === "dark") {
document.documentElement.setAttribute("data-theme", "dark");
}
} catch (e) {}
})();
</script>
<!-- PWA Meta Tags -->
<meta
name="description"
content="NoteJS - современная система заметок с поддержкой Markdown, изображений, тегов и календаря"
/>
<meta name="theme-color" content="#007bff" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="NoteJS" />
<meta name="msapplication-TileColor" content="#007bff" />
<!-- Icons -->
<link rel="icon" type="image/svg+xml" href="/icon.svg" />
<link
rel="icon"
type="image/png"
sizes="32x32"
href="/icons/icon-32x32.png"
/>
<link
rel="icon"
type="image/png"
sizes="16x16"
href="/icons/icon-16x16.png"
/>
<link
rel="apple-touch-icon"
sizes="180x180"
href="/icons/icon-192x192.png"
/>
<link rel="mask-icon" href="/icon.svg" color="#007bff" />
<!-- Manifest -->
<link rel="manifest" href="/manifest.json" />
<!-- Styles -->
<link rel="stylesheet" href="/style.css?v=3" />
<!-- Scripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js"></script>
</head>
<body>
<div class="container">
<header class="notes-header">
<span
><span class="iconify" data-icon="mdi:account"></span> Личный
кабинет</span
>
<div class="user-info">
<button
id="theme-toggle-btn"
class="theme-toggle-btn"
title="Переключить тему"
>
<span class="iconify" data-icon="mdi:theme-light-dark"></span>
</button>
<a href="/notes" class="back-btn">
<span class="iconify" data-icon="mdi:note-text"></span> К заметкам
</a>
<a href="/settings" class="back-btn">
<span class="iconify" data-icon="mdi:cog"></span> Настройки
</a>
</div>
</header>
<div class="profile-container">
<!-- Секция аватарки -->
<div class="avatar-section">
<div class="avatar-wrapper">
<img
id="avatarImage"
src=""
alt="Аватар"
class="avatar-preview"
loading="lazy"
style="display: none"
/>
<div id="avatarPlaceholder" class="avatar-placeholder">
<span class="iconify" data-icon="mdi:account"></span>
</div>
</div>
<div class="avatar-buttons">
<label for="avatarInput" class="btn-upload">
<span class="iconify" data-icon="mdi:upload"></span> Загрузить
аватар
</label>
<input
type="file"
id="avatarInput"
accept="image/*"
style="display: none"
/>
<button
id="deleteAvatarBtn"
class="btn-delete"
style="display: none"
>
<span class="iconify" data-icon="mdi:delete"></span> Удалить
</button>
</div>
<p class="avatar-hint">
Максимальный размер: 5 МБ. Форматы: JPG, PNG, GIF
</p>
</div>
<!-- Секция данных профиля -->
<div class="profile-form">
<h3>Данные профиля</h3>
<div class="form-group">
<label for="username">Логин</label>
<input
type="text"
id="username"
placeholder="Логин"
minlength="3"
/>
</div>
<div class="form-group">
<label for="email">Email (необязательно)</label>
<input type="email" id="email" placeholder="example@example.com" />
</div>
<button id="updateProfileBtn" class="btnSave">
Сохранить изменения
</button>
<hr class="separator" />
<h3>Изменить пароль</h3>
<div class="form-group">
<label for="currentPassword">Текущий пароль</label>
<input
type="password"
id="currentPassword"
placeholder="Текущий пароль"
/>
</div>
<div class="form-group">
<label for="newPassword">Новый пароль</label>
<input
type="password"
id="newPassword"
placeholder="Новый пароль (минимум 6 символов)"
minlength="6"
/>
</div>
<div class="form-group">
<label for="confirmPassword">Подтвердите новый пароль</label>
<input
type="password"
id="confirmPassword"
placeholder="Подтвердите новый пароль"
/>
</div>
<button id="changePasswordBtn" class="btnSave">
Изменить пароль
</button>
<hr class="separator" />
<button id="deleteAccountBtn" class="btn-danger">
<span class="iconify" data-icon="mdi:account-remove"></span>
Удалить аккаунт
</button>
<p style="color: #666; font-size: 14px; margin-bottom: 15px">
Удаление аккаунта - это необратимое действие. Все ваши заметки,
изображения и данные будут удалены навсегда.
</p>
</div>
</div>
</div>
<!-- Модальное окно подтверждения удаления аккаунта -->
<div id="deleteAccountModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h3 style="color: #dc3545">Удаление аккаунта</h3>
<span class="modal-close" id="deleteAccountModalClose">&times;</span>
</div>
<div class="modal-body">
<p style="color: #dc3545; font-weight: bold; margin-bottom: 15px">
⚠️ ВНИМАНИЕ: Это действие нельзя отменить!
</p>
<p style="margin-bottom: 20px">
Вы действительно хотите удалить свой аккаунт? Все ваши заметки,
изображения, настройки и данные будут удалены навсегда.
</p>
<div style="margin-bottom: 15px">
<label
for="deleteAccountPassword"
style="display: block; margin-bottom: 5px; font-weight: bold"
>
Введите пароль для подтверждения:
</label>
<input
type="password"
id="deleteAccountPassword"
placeholder="Пароль от аккаунта"
class="modal-password-input"
/>
</div>
</div>
<div class="modal-footer">
<button
id="confirmDeleteAccount"
class="btn-danger"
style="margin-right: 10px"
>
<span class="iconify" data-icon="mdi:account-remove"></span> Удалить
аккаунт
</button>
<button id="cancelDeleteAccount" class="btn-secondary">Отмена</button>
</div>
</div>
</div>
<div class="footer">
<p>Создатель: <span>Fovway</span></p>
</div>
<script src="/profile.js"></script>
<!-- PWA Script -->
<script src="/pwa.js"></script>
</body>
</html>