From 3d178ed486758db7238fb1c0440171ab5851c2d1 Mon Sep 17 00:00:00 2001 From: Professional Date: Sun, 25 May 2025 01:35:58 +0700 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B3=D1=84=D0=B8=D0=BA=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/controllers/authController.js | 4 ++-- backend/controllers/userController.js | 7 +++---- backend/models/User.js | 1 + src/views/PreferencesView.vue | 7 ------- src/views/ProfileView.vue | 9 +++++++-- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/backend/controllers/authController.js b/backend/controllers/authController.js index d3b4ebf..14410e2 100644 --- a/backend/controllers/authController.js +++ b/backend/controllers/authController.js @@ -18,9 +18,9 @@ const registerUser = async (req, res, next) => { console.log('Начало регистрации пользователя с email:', email); - if (!name || !email || !password) { + if (!name || !email || !password || !dateOfBirth) { res.status(400); - throw new Error('Пожалуйста, заполните все обязательные поля: имя, email и пароль.'); + throw new Error('Пожалуйста, заполните все обязательные поля: имя, email, пароль и дату рождения.'); } const normalizedEmail = email.toLowerCase(); diff --git a/backend/controllers/userController.js b/backend/controllers/userController.js index 63c83e2..a520f4b 100644 --- a/backend/controllers/userController.js +++ b/backend/controllers/userController.js @@ -18,12 +18,11 @@ const updateUserProfile = async (req, res, next) => { // Обновляем только те поля, которые пользователь может изменять user.name = req.body.name || user.name; - // Обрабатываем dateOfBirth, учитывая null и пустые строки - if (req.body.dateOfBirth === null || req.body.dateOfBirth === '') { - user.dateOfBirth = undefined; // Удаляем поле, если оно пустое или null - } else if (req.body.dateOfBirth) { + // Обрабатываем dateOfBirth, но не позволяем удалять её + if (req.body.dateOfBirth && req.body.dateOfBirth !== '') { user.dateOfBirth = req.body.dateOfBirth; } + // Примечание: Мы больше не позволяем устанавливать dateOfBirth в undefined // Обрабатываем gender, учитывая null и пустые строки if (req.body.gender === null || req.body.gender === '') { diff --git a/backend/models/User.js b/backend/models/User.js index a5f43f3..86fa06c 100644 --- a/backend/models/User.js +++ b/backend/models/User.js @@ -27,6 +27,7 @@ const userSchema = new mongoose.Schema( }, dateOfBirth: { type: Date, + required: [true, 'Пожалуйста, укажите дату рождения'], }, gender: { type: String, diff --git a/src/views/PreferencesView.vue b/src/views/PreferencesView.vue index 118ea63..9071fa9 100644 --- a/src/views/PreferencesView.vue +++ b/src/views/PreferencesView.vue @@ -66,13 +66,6 @@

Ваш возраст: {{ currentUserAge }} лет

- diff --git a/src/views/ProfileView.vue b/src/views/ProfileView.vue index 6484a0e..a3b0ca8 100644 --- a/src/views/ProfileView.vue +++ b/src/views/ProfileView.vue @@ -1403,8 +1403,9 @@ onUnmounted(() => { .avatar-section { display: flex; align-items: flex-start; - gap: 1rem; + gap: 1.5rem; /* увеличиваем отступ между элементами */ margin-bottom: 1rem; + flex-wrap: wrap; /* позволяет кнопке переноситься на новую строку при необходимости */ } .avatar-container { @@ -1480,6 +1481,7 @@ onUnmounted(() => { display: flex; flex-direction: column; gap: 0.3rem; + max-width: calc(100% - 175px); /* ограничиваем ширину, чтобы оставить место для кнопки */ } .user-main-info { @@ -1507,6 +1509,7 @@ onUnmounted(() => { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + width: 100%; /* заставляем почту занимать всю доступную ширину */ } .user-badges { @@ -1689,11 +1692,12 @@ onUnmounted(() => { .tabs-container { display: flex; border-bottom: 1px solid rgba(0, 0, 0, 0.08); + width: 100%; } .tab-btn { flex: 1; - padding: 0.8rem 1rem; + padding: 0.8rem 0.5rem; text-align: center; font-size: 0.85rem; font-weight: 500; @@ -1707,6 +1711,7 @@ onUnmounted(() => { align-items: center; justify-content: center; gap: 0.4rem; + width: 33.333%; /* Явно задаём ширину каждой вкладке */ } .tab-btn.active {