- {/*
*/}
{/* Footer */}
@@ -265,69 +259,69 @@ export function SidebarMobileHeader() {
className=" flex flex-col gap-y-4 pb-8 overflow-y-scroll no-scroll"
>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
}
/>
{(!user || user?.role === "admin") && (
<>
}
/>
}
/>
}
/>
>
)}
}
/>
}
/>
diff --git a/frontend/src/components/Sidebar/index.jsx b/frontend/src/components/Sidebar/index.jsx
index d6825765ec6..2c622efff84 100644
--- a/frontend/src/components/Sidebar/index.jsx
+++ b/frontend/src/components/Sidebar/index.jsx
@@ -272,7 +272,7 @@ export function SidebarMobileHeader() {
function SettingsButton() {
return (
diff --git a/frontend/src/pages/GeneralSettings/Security/index.jsx b/frontend/src/pages/GeneralSettings/Security/index.jsx
index f0ecaf7ef47..fbf2dbc8406 100644
--- a/frontend/src/pages/GeneralSettings/Security/index.jsx
+++ b/frontend/src/pages/GeneralSettings/Security/index.jsx
@@ -55,7 +55,7 @@ function MultiUserMode() {
window.localStorage.removeItem(AUTH_USER);
window.localStorage.removeItem(AUTH_TOKEN);
window.localStorage.removeItem(AUTH_TIMESTAMP);
- window.location = paths.admin.users();
+ window.location = paths.settings.users();
}, 2_000);
return;
}
diff --git a/frontend/src/utils/paths.js b/frontend/src/utils/paths.js
index cbe19795f45..c2274615b85 100644
--- a/frontend/src/utils/paths.js
+++ b/frontend/src/utils/paths.js
@@ -39,47 +39,42 @@ export default {
apiDocs: () => {
return `${API_BASE}/docs`;
},
- general: {
+ settings: {
+ system: () => {
+ return `/settings/system-preferences`;
+ },
+ users: () => {
+ return `/settings/users`;
+ },
+ invites: () => {
+ return `/settings/invites`;
+ },
+ workspaces: () => {
+ return `/settings/workspaces`;
+ },
+ chats: () => {
+ return "/settings/workspace-chats";
+ },
llmPreference: () => {
- return "/general/llm-preference";
+ return "/settings/llm-preference";
},
embeddingPreference: () => {
- return "/general/embedding-preference";
+ return "/settings/embedding-preference";
},
vectorDatabase: () => {
- return "/general/vector-database";
+ return "/settings/vector-database";
},
exportImport: () => {
- return "/general/export-import";
+ return "/settings/export-import";
},
security: () => {
- return "/general/security";
+ return "/settings/security";
},
appearance: () => {
- return "/general/appearance";
+ return "/settings/appearance";
},
apiKeys: () => {
- return "/general/api-keys";
- },
- chats: () => {
- return "/general/workspace-chats";
+ return "/settings/api-keys";
},
- },
- admin: {
- system: () => {
- return `/admin/system-preferences`;
- },
- users: () => {
- return `/admin/users`;
- },
- invites: () => {
- return `/admin/invites`;
- },
- workspaces: () => {
- return `/admin/workspaces`;
- },
- chats: () => {
- return "/admin/workspace-chats";
- },
- },
+ }
};
From c513fa2b2c9fa7fde7eb47032a09dc662b8f05ed Mon Sep 17 00:00:00 2001
From: shatfield4
Date: Fri, 10 Nov 2023 15:02:38 -0800
Subject: [PATCH 09/16] admin, manager, default roles complete
---
frontend/src/App.jsx | 2 +-
.../src/components/PrivateRoute/index.jsx | 4 +
.../src/components/SettingsSidebar/index.jsx | 1 -
frontend/src/components/Sidebar/index.jsx | 6 +-
.../pages/Admin/Users/NewUserModal/index.jsx | 2 +-
.../Users/UserRow/EditUserModal/index.jsx | 4 +-
.../src/pages/Admin/Users/UserRow/index.jsx | 49 ++--
frontend/src/utils/paths.js | 2 +-
server/endpoints/admin.js | 224 +++++++++++++-----
9 files changed, 200 insertions(+), 94 deletions(-)
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index 9d83b6f5d28..2b8a645b3ad 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -78,7 +78,7 @@ export default function App() {
element={ }
/>
}
/>
-
{/* Footer */}
diff --git a/frontend/src/components/Sidebar/index.jsx b/frontend/src/components/Sidebar/index.jsx
index 2c622efff84..e0c7c070d4f 100644
--- a/frontend/src/components/Sidebar/index.jsx
+++ b/frontend/src/components/Sidebar/index.jsx
@@ -45,7 +45,7 @@ export default function Sidebar() {
style={{ objectFit: "contain" }}
/>
- {(!user || (user?.role === "admin" || user?.role === "manager")) && (
+ {(!user || user?.role === "admin" || user?.role === "manager") && (
@@ -201,7 +201,9 @@ export function SidebarMobileHeader() {
style={{ objectFit: "contain" }}
/>
- {(!user || (user?.role === "admin" || user?.role === "manager")) && (
+ {(!user ||
+ user?.role === "admin" ||
+ user?.role === "manager") && (
diff --git a/frontend/src/pages/Admin/Users/NewUserModal/index.jsx b/frontend/src/pages/Admin/Users/NewUserModal/index.jsx
index c3a6a94595d..95dec19e693 100644
--- a/frontend/src/pages/Admin/Users/NewUserModal/index.jsx
+++ b/frontend/src/pages/Admin/Users/NewUserModal/index.jsx
@@ -94,7 +94,7 @@ export default function NewUserModal() {
>
Default
Manager
- {user?.role === "admin" && (
+ {(!user || user?.role === "admin") && (
Administrator
)}
diff --git a/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx b/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx
index 2da02934071..1dddd4486a5 100644
--- a/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx
+++ b/frontend/src/pages/Admin/Users/UserRow/EditUserModal/index.jsx
@@ -94,7 +94,9 @@ export default function EditUserModal({ user }) {
>
Default
Manager
-
Administrator
+ {(!user || user?.role === "admin") && (
+
Administrator
+ )}
{error && (
diff --git a/frontend/src/pages/Admin/Users/UserRow/index.jsx b/frontend/src/pages/Admin/Users/UserRow/index.jsx
index c4dac62cf2d..b3997a914c2 100644
--- a/frontend/src/pages/Admin/Users/UserRow/index.jsx
+++ b/frontend/src/pages/Admin/Users/UserRow/index.jsx
@@ -40,30 +40,33 @@ export default function UserRow({ currUser, user }) {
{titleCase(user.role)}
{user.createdAt}
-
- document?.getElementById(EditUserModalId(user))?.showModal()
- }
- className="font-medium text-white text-opacity-80 rounded-lg hover:text-white px-2 py-1 hover:text-opacity-60 hover:bg-white hover:bg-opacity-10"
- >
-
-
- {currUser.id !== user.id && (
- <>
-
- {suspended ? "Unsuspend" : "Suspend"}
-
-
- Delete
-
- >
+ {!(currUser?.role === "manager" && user.role === "admin") && (
+
+ document?.getElementById(EditUserModalId(user))?.showModal()
+ }
+ className="font-medium text-white text-opacity-80 rounded-lg hover:text-white px-2 py-1 hover:text-opacity-60 hover:bg-white hover:bg-opacity-10"
+ >
+
+
)}
+ {currUser?.id !== user.id &&
+ !(currUser?.role === "manager" && user.role === "admin") && (
+ <>
+
+ {suspended ? "Unsuspend" : "Suspend"}
+
+
+ Delete
+
+ >
+ )}
diff --git a/frontend/src/utils/paths.js b/frontend/src/utils/paths.js
index c2274615b85..bfeb8b1bdf3 100644
--- a/frontend/src/utils/paths.js
+++ b/frontend/src/utils/paths.js
@@ -76,5 +76,5 @@ export default {
apiKeys: () => {
return "/settings/api-keys";
},
- }
+ },
};
diff --git a/server/endpoints/admin.js b/server/endpoints/admin.js
index ebec3f52915..d350b85168c 100644
--- a/server/endpoints/admin.js
+++ b/server/endpoints/admin.js
@@ -10,16 +10,26 @@ const { getVectorDbClass } = require("../utils/helpers");
const { userFromSession, reqBody } = require("../utils/http");
const { validatedRequest } = require("../utils/middleware/validatedRequest");
+const ROLES = ["admin", "manager"];
+
function adminEndpoints(app) {
if (!app) return;
app.get("/admin/users", [validatedRequest], async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
+
const users = (await User.where()).map((user) => {
const { password, ...rest } = user;
return rest;
@@ -36,10 +46,17 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const newUserParams = reqBody(request);
@@ -54,10 +71,17 @@ function adminEndpoints(app) {
app.post("/admin/user/:id", [validatedRequest], async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const { id } = request.params;
@@ -75,11 +99,19 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
+
const { id } = request.params;
await User.delete({ id: Number(id) });
response.status(200).json({ success: true, error: null });
@@ -92,10 +124,17 @@ function adminEndpoints(app) {
app.get("/admin/invites", [validatedRequest], async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const invites = await Invite.whereWithUsers();
@@ -111,10 +150,17 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const { invite, error } = await Invite.create(user.id);
@@ -131,10 +177,17 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const { id } = request.params;
@@ -152,11 +205,19 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
+
const workspaces = await Workspace.whereWithUsers();
response.status(200).json({ workspaces });
} catch (e) {
@@ -171,11 +232,19 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
+
const { name } = reqBody(request);
const { workspace, message: error } = await Workspace.new(
name,
@@ -194,10 +263,17 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const { workspaceId } = request.params;
@@ -219,10 +295,17 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const { id } = request.params;
@@ -256,10 +339,17 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ // const user = await userFromSession(request, response);
+ // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
+ // response.sendStatus(401).end();
+ // return;
+ // }
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const settings = {
@@ -287,10 +377,11 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const updates = reqBody(request);
@@ -305,10 +396,11 @@ function adminEndpoints(app) {
app.get("/admin/api-keys", [validatedRequest], async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const apiKeys = await ApiKey.whereWithUser({});
@@ -330,10 +422,11 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
const { apiKey, error } = await ApiKey.create(user.id);
@@ -354,11 +447,14 @@ function adminEndpoints(app) {
async (request, response) => {
try {
const { id } = request.params;
- const user = await userFromSession(request, response);
- if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- response.sendStatus(401).end();
- return;
+
+ if (
+ response.locals.multiUserMode &&
+ !ROLES.includes(response.locals.user?.role)
+ ) {
+ return response.sendStatus(401).end();
}
+
await ApiKey.delete({ id: Number(id) });
return response.status(200).end();
} catch (e) {
From fc74b8cf1fa4643c8430960500b2eb42acce0a33 Mon Sep 17 00:00:00 2001
From: shatfield4
Date: Fri, 10 Nov 2023 15:09:02 -0800
Subject: [PATCH 10/16] remove unneeded comments
---
server/endpoints/admin.js | 74 +--------------------------------------
1 file changed, 1 insertion(+), 73 deletions(-)
diff --git a/server/endpoints/admin.js b/server/endpoints/admin.js
index d350b85168c..eb123d7eb50 100644
--- a/server/endpoints/admin.js
+++ b/server/endpoints/admin.js
@@ -7,7 +7,7 @@ const { DocumentVectors } = require("../models/vectors");
const { Workspace } = require("../models/workspace");
const { WorkspaceChats } = require("../models/workspaceChats");
const { getVectorDbClass } = require("../utils/helpers");
-const { userFromSession, reqBody } = require("../utils/http");
+const { reqBody } = require("../utils/http");
const { validatedRequest } = require("../utils/middleware/validatedRequest");
const ROLES = ["admin", "manager"];
@@ -17,12 +17,6 @@ function adminEndpoints(app) {
app.get("/admin/users", [validatedRequest], async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -46,12 +40,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -71,12 +59,6 @@ function adminEndpoints(app) {
app.post("/admin/user/:id", [validatedRequest], async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -99,12 +81,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -124,12 +100,6 @@ function adminEndpoints(app) {
app.get("/admin/invites", [validatedRequest], async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -150,12 +120,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -177,12 +141,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -205,12 +163,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -232,12 +184,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -263,12 +209,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -295,12 +235,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
@@ -339,12 +273,6 @@ function adminEndpoints(app) {
[validatedRequest],
async (request, response) => {
try {
- // const user = await userFromSession(request, response);
- // if (!user || (user?.role !== "admin" && user?.role !== "manager")) {
- // response.sendStatus(401).end();
- // return;
- // }
-
if (
response.locals.multiUserMode &&
!ROLES.includes(response.locals.user?.role)
From 22590aa451a0fd14e72113eb5bd7e3c5d4c69617 Mon Sep 17 00:00:00 2001
From: shatfield4
Date: Fri, 10 Nov 2023 15:14:11 -0800
Subject: [PATCH 11/16] consistency changes
---
server/endpoints/system.js | 20 ++++++++------------
1 file changed, 8 insertions(+), 12 deletions(-)
diff --git a/server/endpoints/system.js b/server/endpoints/system.js
index e896069a325..25db88ec2b7 100644
--- a/server/endpoints/system.js
+++ b/server/endpoints/system.js
@@ -41,6 +41,8 @@ const { getCustomModels } = require("../utils/helpers/customModels");
const { WorkspaceChats } = require("../models/workspaceChats");
const { Workspace } = require("../models/workspace");
+const ROLES = ["admin", "manager"];
+
function systemEndpoints(app) {
if (!app) return;
@@ -434,8 +436,7 @@ function systemEndpoints(app) {
try {
if (
response.locals.multiUserMode &&
- response.locals.user?.role !== "admin" &&
- response.locals.user?.role !== "manager"
+ !ROLES.includes(response.locals.user?.role)
) {
return response.sendStatus(401).end();
}
@@ -478,8 +479,7 @@ function systemEndpoints(app) {
try {
if (
response.locals.multiUserMode &&
- response.locals.user?.role !== "admin" &&
- response.locals.user?.role !== "manager"
+ !ROLES.includes(response.locals.user?.role)
) {
return response.sendStatus(401).end();
}
@@ -547,8 +547,7 @@ function systemEndpoints(app) {
try {
if (
response.locals.multiUserMode &&
- response.locals.user?.role !== "admin" &&
- response.locals.user?.role !== "manager"
+ !ROLES.includes(response.locals.user?.role)
) {
return response.sendStatus(401).end();
}
@@ -659,8 +658,7 @@ function systemEndpoints(app) {
try {
if (
response.locals.multiUserMode &&
- response.locals.user?.role !== "admin" &&
- response.locals.user?.role !== "manager"
+ !ROLES.includes(response.locals.user?.role)
) {
return response.sendStatus(401).end();
}
@@ -690,8 +688,7 @@ function systemEndpoints(app) {
try {
if (
response.locals.multiUserMode &&
- response.locals.user?.role !== "admin" &&
- response.locals.user?.role !== "manager"
+ !ROLES.includes(response.locals.user?.role)
) {
return response.sendStatus(401).end();
}
@@ -713,8 +710,7 @@ function systemEndpoints(app) {
try {
if (
response.locals.multiUserMode &&
- response.locals.user?.role !== "admin" &&
- response.locals.user?.role !== "manager"
+ !ROLES.includes(response.locals.user?.role)
) {
return response.sendStatus(401).end();
}
From e63af3f20b2369ca57a63839ba6c22fd7dce9b64 Mon Sep 17 00:00:00 2001
From: timothycarambat
Date: Mon, 13 Nov 2023 13:56:03 -0800
Subject: [PATCH 12/16] manage permissions for mum modes
---
.../Modals/MangeWorkspace/index.jsx | 2 +-
.../src/components/PrivateRoute/index.jsx | 3 +-
frontend/src/components/Sidebar/index.jsx | 49 ++--
.../ChatContainer/PromptInput/index.jsx | 2 +-
server/endpoints/admin.js | 245 ++++++------------
server/endpoints/system.js | 76 +-----
server/endpoints/workspaces.js | 54 ++--
server/models/workspace.js | 5 +-
server/utils/middleware/multiUserProtected.js | 41 +++
server/utils/middleware/validatedRequest.js | 19 +-
10 files changed, 198 insertions(+), 298 deletions(-)
create mode 100644 server/utils/middleware/multiUserProtected.js
diff --git a/frontend/src/components/Modals/MangeWorkspace/index.jsx b/frontend/src/components/Modals/MangeWorkspace/index.jsx
index a7c1343d73c..d38cc35301f 100644
--- a/frontend/src/components/Modals/MangeWorkspace/index.jsx
+++ b/frontend/src/components/Modals/MangeWorkspace/index.jsx
@@ -122,7 +122,7 @@ export function useManageWorkspaceModal() {
const [showing, setShowing] = useState(false);
const showModal = () => {
- if (user?.role === "admin" || user?.role === "manager") {
+ if (user?.role !== "default") {
setShowing(true);
}
};
diff --git a/frontend/src/components/PrivateRoute/index.jsx b/frontend/src/components/PrivateRoute/index.jsx
index 388d41c8d3f..7ca949b26aa 100644
--- a/frontend/src/components/PrivateRoute/index.jsx
+++ b/frontend/src/components/PrivateRoute/index.jsx
@@ -116,8 +116,7 @@ export function ManagerRoute({ Component }) {
}
const user = userFromStorage();
- return isAuthd &&
- (user?.role === "manager" || user?.role === "admin" || !multiUserMode) ? (
+ return isAuthd && (user?.role !== "default" || !multiUserMode) ? (
diff --git a/frontend/src/components/Sidebar/index.jsx b/frontend/src/components/Sidebar/index.jsx
index e0c7c070d4f..2e8732d88a7 100644
--- a/frontend/src/components/Sidebar/index.jsx
+++ b/frontend/src/components/Sidebar/index.jsx
@@ -18,6 +18,7 @@ import useLogo from "../../hooks/useLogo";
import useUser from "../../hooks/useUser";
export default function Sidebar() {
+ const { user } = useUser();
const { logo } = useLogo();
const sidebarRef = useRef(null);
const {
@@ -25,7 +26,6 @@ export default function Sidebar() {
showModal: showNewWsModal,
hideModal: hideNewWsModal,
} = useNewWorkspaceModal();
- const { user } = useUser();
return (
<>
@@ -45,7 +45,7 @@ export default function Sidebar() {
style={{ objectFit: "contain" }}
/>
- {(!user || user?.role === "admin" || user?.role === "manager") && (
+ {(!user || user?.role !== "default") && (