From 6923af70ad253d9c731711e8ca7d4814334994e4 Mon Sep 17 00:00:00 2001 From: ma-zhongxu Date: Fri, 28 Feb 2025 20:33:05 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=96=B0=E5=A2=9E=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/Sidebar/index.jsx | 2 +- .../Members/AddMemberModal/index.jsx | 12 +++--- .../pages/WorkspaceSettings/Members/index.jsx | 8 ++-- frontend/src/utils/constants.js | 4 +- server/endpoints/admin.js | 43 +++++++++++++++++++ server/models/deptUsers.js | 1 + server/models/user.js | 2 + server/models/workspace.js | 3 +- 8 files changed, 61 insertions(+), 14 deletions(-) diff --git a/frontend/src/components/Sidebar/index.jsx b/frontend/src/components/Sidebar/index.jsx index 69a4bac..8ac098e 100644 --- a/frontend/src/components/Sidebar/index.jsx +++ b/frontend/src/components/Sidebar/index.jsx @@ -62,7 +62,7 @@ export default function Sidebar() {
- {(!user || user?.role !== "default") && ( + {(!user || user?.role == "admin") && ( {selectedUsers.length > 0 && ( )} @@ -153,7 +153,7 @@ export default function AddMemberModal({ closeModal, workspace, users }) { type="submit" className="transition-all duration-300 text-xs px-2 py-1 font-semibold rounded-lg bg-primary-button hover:bg-secondary border-2 border-transparent hover:border-primary-button hover:text-white h-[32px] w-[68px] -mr-8 whitespace-nowrap shadow-[0_4px_14px_rgba(0,0,0,0.25)]" > - Save + 保存
diff --git a/frontend/src/pages/WorkspaceSettings/Members/index.jsx b/frontend/src/pages/WorkspaceSettings/Members/index.jsx index d7f8bea..e18f5a7 100644 --- a/frontend/src/pages/WorkspaceSettings/Members/index.jsx +++ b/frontend/src/pages/WorkspaceSettings/Members/index.jsx @@ -51,13 +51,13 @@ export default function Members({ workspace }) { - Username + 用户名 - Role + 角色 - Date Added + 添加时间 {" "} @@ -78,7 +78,7 @@ export default function Members({ workspace }) { )} - Manage Users + 用户管理 { + try { + const currUser = await userFromSession(request, response); + const { deptId } = request.params; + const newUserParams = reqBody(request); + const roleValidation = validRoleSelection(currUser, newUserParams); + + if (!roleValidation.valid) { + return response.status(400).json({ error: roleValidation.error }); + } + + await prisma.$transaction(async () => { + try { + const { user: newUser, error } = await User.create(newUserParams); + console.log("newUser", newUser); + + const deptUser = await DeptUsers.create({ + data: { userId: newUser.id, deptId: deptId }, + }); + + await EventLogs.logEvent( + "user_created", + { userName: newUser.username, createdBy: currUser.username }, + currUser.id + ); + + response.status(200).json({ user: newUser, error }); + } catch (error) { + throw new Error(`Transaction failed: ${error.message}`); + } + }); + } catch (e) { + console.error("Error creating user and dept user association:", e); + response.status(500).json({ error: "Internal Server Error" }); + } + } + ); + // app.post( // "/admin/users/new", // [validatedRequest, strictMultiUserRoleValid([ROLES.admin, ROLES.manager])], diff --git a/server/models/deptUsers.js b/server/models/deptUsers.js index e978212..908d77f 100644 --- a/server/models/deptUsers.js +++ b/server/models/deptUsers.js @@ -43,6 +43,7 @@ const DeptUsers = { * @returns {Promise<{ deptUser: DeptUser | null, error: string | null }>} */ create: async function (data) { + console.log("55555555555555555", data); try { const validatedData = {}; for (const key of this.writable) { diff --git a/server/models/user.js b/server/models/user.js index e6915d9..f122e85 100644 --- a/server/models/user.js +++ b/server/models/user.js @@ -101,6 +101,8 @@ const User = { this.validations.dailyMessageLimit(dailyMessageLimit), }, }); + // const vue = this.filterFields(user); + console.log("6666666666",user); return { user: this.filterFields(user), error: null }; } catch (error) { console.error("FAILED TO CREATE USER.", error.message); diff --git a/server/models/workspace.js b/server/models/workspace.js index 91d6593..bdfbda2 100644 --- a/server/models/workspace.js +++ b/server/models/workspace.js @@ -318,7 +318,8 @@ const Workspace = { limit = null, orderBy = null ) { - if ([ROLES.admin, ROLES.manager].includes(user.role)) + // if ([ROLES.admin, ROLES.manager].includes(user.role)) + if ([ROLES.admin].includes(user.role)) return await this.where(clause, limit, orderBy); try {