From 814b71052d564313fba16fa39a10ec30fda9e4c5 Mon Sep 17 00:00:00 2001 From: Tuan Dang Date: Mon, 27 Nov 2023 15:50:00 +0700 Subject: [PATCH] Update error-handling, show underprivileged notification error --- backend/src/controllers/v2/workspaceController.ts | 2 +- backend/src/middleware/requestErrorHandler.ts | 5 +++-- backend/src/utils/requestError.ts | 5 +++-- .../MachineIdentitySection/AddMachineIdentityModal.tsx | 7 +++++-- .../MachineIdentitySection/AddMachineIdentityModal.tsx | 6 +++++- .../ProjectRoleModifySection/SingleProjectPermission.tsx | 1 + 6 files changed, 18 insertions(+), 8 deletions(-) diff --git a/backend/src/controllers/v2/workspaceController.ts b/backend/src/controllers/v2/workspaceController.ts index fc825411e..e8d68d06a 100644 --- a/backend/src/controllers/v2/workspaceController.ts +++ b/backend/src/controllers/v2/workspaceController.ts @@ -551,7 +551,7 @@ export const addMachineToWorkspace = async (req: Request, res: Response) => { const hasRequiredPrivileges = isAtLeastAsPrivilegedWorkspace(permission, rolePermission); if (!hasRequiredPrivileges) throw ForbiddenRequestError({ - message: "Failed to add a more privileged MI to workspace" + message: "Failed to add a more privileged MI to project" }); let customRole; diff --git a/backend/src/middleware/requestErrorHandler.ts b/backend/src/middleware/requestErrorHandler.ts index 725fc4955..99417d030 100644 --- a/backend/src/middleware/requestErrorHandler.ts +++ b/backend/src/middleware/requestErrorHandler.ts @@ -39,8 +39,9 @@ export const requestErrorHandler: ErrorRequestHandler = async ( Sentry.captureException(error); - delete (error).stacktrace // remove stack trace from being sent to client - res.status((error).statusCode).json(error); // revise json part here + res.status((error).statusCode).send( + await error.format(req) + ); next(); }; diff --git a/backend/src/utils/requestError.ts b/backend/src/utils/requestError.ts index f5f320b8d..7e4625e30 100644 --- a/backend/src/utils/requestError.ts +++ b/backend/src/utils/requestError.ts @@ -53,9 +53,10 @@ export default class RequestError extends Error { ){ super(message) - this._logLevel = logLevel || LogLevel.INFO + this._logLevel = logLevel || LogLevel.INFO; this._logName = LogLevel[this._logLevel]; - this.statusCode = statusCode + this.statusCode = statusCode; + this.message = message; this.type = type this.context = context || {} this.extra = [] diff --git a/frontend/src/views/Org/MembersPage/components/OrgMachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx b/frontend/src/views/Org/MembersPage/components/OrgMachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx index 9439c6daf..19d4f050d 100644 --- a/frontend/src/views/Org/MembersPage/components/OrgMachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx +++ b/frontend/src/views/Org/MembersPage/components/OrgMachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx @@ -236,9 +236,12 @@ export const AddMachineIdentityModal = ({ reset(); } catch (err) { - console.error(err); + const error = err as any; + const text = error?.response?.data?.message + ?? `Failed to ${popUp?.machineIdentity?.data ? "updated" : "created"} machine identity`; + createNotification({ - text: `Failed to ${popUp?.machineIdentity?.data ? "updated" : "created"} machine identity`, + text, type: "error" }); } diff --git a/frontend/src/views/Project/MembersPage/components/MachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx b/frontend/src/views/Project/MembersPage/components/MachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx index 1c9837804..fdcc0e1c7 100644 --- a/frontend/src/views/Project/MembersPage/components/MachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx +++ b/frontend/src/views/Project/MembersPage/components/MachineIdentityTab/components/MachineIdentitySection/AddMachineIdentityModal.tsx @@ -101,8 +101,12 @@ export const AddMachineIdentityModal = ({ handlePopUpToggle("machineIdentity", false); } catch (err) { console.error(err); + const error = err as any; + const text = error?.response?.data?.message + ?? "Failed to add machine identity to project"; + createNotification({ - text: "Failed to add machine identity to project", + text, type: "error" }); } diff --git a/frontend/src/views/Project/MembersPage/components/ProjectRoleListTab/components/ProjectRoleModifySection/SingleProjectPermission.tsx b/frontend/src/views/Project/MembersPage/components/ProjectRoleListTab/components/ProjectRoleModifySection/SingleProjectPermission.tsx index 54a58576f..38fffb796 100644 --- a/frontend/src/views/Project/MembersPage/components/ProjectRoleListTab/components/ProjectRoleModifySection/SingleProjectPermission.tsx +++ b/frontend/src/views/Project/MembersPage/components/ProjectRoleListTab/components/ProjectRoleModifySection/SingleProjectPermission.tsx @@ -23,6 +23,7 @@ type Props = { | "tags" | "audit-logs" | "ip-allowlist" + | "machine-identity" | ProjectPermissionSub.SecretApproval; isNonEditable?: boolean; setValue: UseFormSetValue;