From 765039c9537f600d047c017b8bd4bf23a553b408 Mon Sep 17 00:00:00 2001 From: Fovway Date: Mon, 13 Oct 2025 23:50:26 +0700 Subject: [PATCH] modified: backend/routes/users.js modified: backend/server.js modified: frontend/src/components/AdminPanel.jsx modified: frontend/src/components/ManagerPanel.jsx --- backend/routes/users.js | 15 ++++++++++++--- backend/server.js | 4 ++-- frontend/src/components/AdminPanel.jsx | 10 +++++++++- frontend/src/components/ManagerPanel.jsx | 10 +++++++++- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/backend/routes/users.js b/backend/routes/users.js index 0235b08..36499f6 100644 --- a/backend/routes/users.js +++ b/backend/routes/users.js @@ -44,6 +44,17 @@ router.post("/", authenticate, authorizeManager, async (req, res) => { .json({ message: "Managers can only create users or managers" }); } + // Check if user already exists + const existingUser = await User.findOne({ where: { username } }); + if (existingUser) { + console.log( + `Попытка создания пользователя с существующим именем: ${username}` + ); + return res + .status(400) + .json({ message: "Такой пользователь уже существует" }); + } + const user = await User.create({ username, password, @@ -61,9 +72,7 @@ router.post("/", authenticate, authorizeManager, async (req, res) => { .status(201) .json({ id: user.id, username: user.username, role: user.role }); } catch (error) { - if (error.name === "SequelizeUniqueConstraintError") { - return res.status(400).json({ message: "Username already exists" }); - } + console.error(`Ошибка при создании пользователя: ${error.message}`); res.status(500).json({ message: "Server error" }); } }); diff --git a/backend/server.js b/backend/server.js index d18be4e..ac5204f 100644 --- a/backend/server.js +++ b/backend/server.js @@ -64,9 +64,9 @@ sequelize console.log("Database synced"); // Create admin user if not exists return User.findOrCreate({ - where: { username: "admin" }, + where: { username: "Semen_Ilin" }, defaults: { - username: "admin", + username: "Semen_Ilin", password: "admin123", // In production, hash this role: "admin", }, diff --git a/frontend/src/components/AdminPanel.jsx b/frontend/src/components/AdminPanel.jsx index a9faa66..6bd6cf5 100644 --- a/frontend/src/components/AdminPanel.jsx +++ b/frontend/src/components/AdminPanel.jsx @@ -146,7 +146,15 @@ const AdminPanel = () => { setShowCreateForm(false); fetchUsers(); } catch (error) { - alert("Ошибка при создании пользователя"); + if ( + error.response && + error.response.data && + error.response.data.message + ) { + alert(error.response.data.message); + } else { + alert("Ошибка при создании пользователя"); + } } }; diff --git a/frontend/src/components/ManagerPanel.jsx b/frontend/src/components/ManagerPanel.jsx index 26c53fd..36a9d4e 100644 --- a/frontend/src/components/ManagerPanel.jsx +++ b/frontend/src/components/ManagerPanel.jsx @@ -128,7 +128,15 @@ const ManagerPanel = () => { setShowCreateForm(false); fetchUsers(); } catch (error) { - alert("Ошибка при создании пользователя"); + if ( + error.response && + error.response.data && + error.response.data.message + ) { + alert(error.response.data.message); + } else { + alert("Ошибка при создании пользователя"); + } } };