From 7e6320aa9e5666e7bf9bb9af03f7520b998fa448 Mon Sep 17 00:00:00 2001 From: Arigii Date: Tue, 3 Jun 2025 16:05:17 +0500 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D1=88?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=BE=D0=BD=20=D0=B4=D0=BB=D1=8F=20=D1=83?= =?UTF-8?q?=D1=87=D0=B0=D1=81=D1=82=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WEB/src/api/users/changeUserPassword.js | 27 ++ WEB/src/api/users/getUsers.js | 18 - WEB/src/api/users/registerUser.js | 19 + WEB/src/pages/AdminPage.vue | 12 +- WEB/src/pages/ContestDetailPage.vue | 70 +-- WEB/src/pages/HomePage.vue | 17 +- WEB/src/pages/UserDetailPage.vue | 574 ++++++++++++++++++++++++ WEB/src/router/index.js | 16 +- 8 files changed, 682 insertions(+), 71 deletions(-) create mode 100644 WEB/src/api/users/changeUserPassword.js delete mode 100644 WEB/src/api/users/getUsers.js create mode 100644 WEB/src/api/users/registerUser.js create mode 100644 WEB/src/pages/UserDetailPage.vue diff --git a/WEB/src/api/users/changeUserPassword.js b/WEB/src/api/users/changeUserPassword.js new file mode 100644 index 0000000..c53c041 --- /dev/null +++ b/WEB/src/api/users/changeUserPassword.js @@ -0,0 +1,27 @@ +import axios from "axios"; +import CONFIG from "@/core/config.js"; + +const changeUserPassword = async (userId, newPasswordData) => { + try { + const token = localStorage.getItem("access_token"); + const response = await axios.patch( + `${CONFIG.BASE_URL}/users/${userId}/password`, + newPasswordData, + { + headers: { + Authorization: `Bearer ${token}`, + }, + } + ); + return response.data; + } catch (error) { + if (error.response?.status === 400) { + throw new Error(error.response.data.detail); + } else if (error.response?.status === 403) { + throw new Error("Доступ запрещён (403)"); + } + throw new Error(error.message); + } +}; + +export default changeUserPassword; \ No newline at end of file diff --git a/WEB/src/api/users/getUsers.js b/WEB/src/api/users/getUsers.js deleted file mode 100644 index 5411f49..0000000 --- a/WEB/src/api/users/getUsers.js +++ /dev/null @@ -1,18 +0,0 @@ -import axios from "axios"; -import CONFIG from "@/core/config.js"; - -const fetchUsers = async () => { - try { - const response = await axios.get(`${CONFIG.BASE_URL}/users`, { - withCredentials: true, - }); - return response.data; - } catch (error) { - if (error.response?.status === 401) { - throw new Error("Нет доступа к пользователям (401)"); - } - throw new Error(error.message); - } -}; - -export default fetchUsers; diff --git a/WEB/src/api/users/registerUser.js b/WEB/src/api/users/registerUser.js new file mode 100644 index 0000000..462f85e --- /dev/null +++ b/WEB/src/api/users/registerUser.js @@ -0,0 +1,19 @@ +import axios from "axios"; +import CONFIG from "@/core/config.js"; + +const registerUser = async (userData) => { + try { + const response = await axios.post( + `${CONFIG.BASE_URL}/users/register`, + userData + ); + return response.data; + } catch (error) { + if (error.response?.status === 400) { + throw new Error(error.response.data.detail); + } + throw new Error(error.message); + } +}; + +export default registerUser; \ No newline at end of file diff --git a/WEB/src/pages/AdminPage.vue b/WEB/src/pages/AdminPage.vue index b4e3209..80f6cc5 100644 --- a/WEB/src/pages/AdminPage.vue +++ b/WEB/src/pages/AdminPage.vue @@ -143,6 +143,7 @@ +