diff --git a/server/routers/external.ts b/server/routers/external.ts index ac7d62a2..47e9a4b0 100644 --- a/server/routers/external.ts +++ b/server/routers/external.ts @@ -150,6 +150,7 @@ authenticated.get( authenticated.post( "/resource/:resourceId", verifyResourceAccess, + verifySiteAccess, verifyUserHasAction(ActionsEnum.updateResource), resource.updateResource ); @@ -370,7 +371,7 @@ authRouter.use( authRouter.put("/signup", auth.signup); authRouter.post("/login", auth.login); authRouter.post("/logout", auth.logout); -authRouter.post('/newt/get-token', getToken); +authRouter.post("/newt/get-token", getToken); authRouter.post("/2fa/enable", verifySessionUserMiddleware, auth.verifyTotp); authRouter.post( diff --git a/server/routers/resource/getResource.ts b/server/routers/resource/getResource.ts index f1b7121d..97055453 100644 --- a/server/routers/resource/getResource.ts +++ b/server/routers/resource/getResource.ts @@ -1,7 +1,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; import { db } from "@server/db"; -import { resources } from "@server/db/schema"; +import { Resource, resources } from "@server/db/schema"; import { eq } from "drizzle-orm"; import response from "@server/utils/response"; import HttpCode from "@server/types/HttpCode"; @@ -12,12 +12,7 @@ const getResourceSchema = z.object({ resourceId: z.string().transform(Number).pipe(z.number().int().positive()), }); -export type GetResourceResponse = { - resourceId: number; - siteId: number; - orgId: string; - name: string; -}; +export type GetResourceResponse = Resource; export async function getResource( req: Request, @@ -53,12 +48,7 @@ export async function getResource( } return response(res, { - data: { - resourceId: resource[0].resourceId, - siteId: resource[0].siteId, - orgId: resource[0].orgId, - name: resource[0].name, - }, + data: resource[0], success: true, error: false, message: "Resource retrieved successfully", diff --git a/server/routers/resource/updateResource.ts b/server/routers/resource/updateResource.ts index 1964e257..719aad97 100644 --- a/server/routers/resource/updateResource.ts +++ b/server/routers/resource/updateResource.ts @@ -1,7 +1,7 @@ import { Request, Response, NextFunction } from "express"; import { z } from "zod"; import { db } from "@server/db"; -import { resources } from "@server/db/schema"; +import { resources, sites } from "@server/db/schema"; import { eq } from "drizzle-orm"; import response from "@server/utils/response"; import HttpCode from "@server/types/HttpCode"; @@ -17,6 +17,8 @@ const updateResourceBodySchema = z .object({ name: z.string().min(1).max(255).optional(), subdomain: z.string().min(1).max(255).optional(), + ssl: z.boolean().optional(), + siteId: z.number(), }) .refine((data) => Object.keys(data).length > 0, { message: "At least one field must be provided for update", diff --git a/src/app/[orgId]/settings/access/roles/components/CreateRoleForm.tsx b/src/app/[orgId]/settings/access/roles/components/CreateRoleForm.tsx index db3805b8..d4f7368c 100644 --- a/src/app/[orgId]/settings/access/roles/components/CreateRoleForm.tsx +++ b/src/app/[orgId]/settings/access/roles/components/CreateRoleForm.tsx @@ -29,6 +29,7 @@ import { } from "@app/components/Credenza"; import { useOrgContext } from "@app/hooks/useOrgContext"; import { CreateRoleBody, CreateRoleResponse } from "@server/routers/role"; +import { formatAxiosError } from "@app/lib/utils"; type CreateRoleFormProps = { open: boolean; @@ -74,9 +75,10 @@ export default function CreateRoleForm({ toast({ variant: "destructive", title: "Failed to create role", - description: - e.response?.data?.message || - "An error occurred while creating the role.", + description: formatAxiosError( + e, + "An error occurred while creating the role." + ), }); }); diff --git a/src/app/[orgId]/settings/access/roles/components/DeleteRoleForm.tsx b/src/app/[orgId]/settings/access/roles/components/DeleteRoleForm.tsx index 706eb0a6..962adb36 100644 --- a/src/app/[orgId]/settings/access/roles/components/DeleteRoleForm.tsx +++ b/src/app/[orgId]/settings/access/roles/components/DeleteRoleForm.tsx @@ -36,6 +36,7 @@ import { SelectValue, } from "@app/components/ui/select"; import { RoleRow } from "./RolesTable"; +import { formatAxiosError } from "@app/lib/utils"; type CreateRoleFormProps = { open: boolean; @@ -71,9 +72,10 @@ export default function DeleteRoleForm({ toast({ variant: "destructive", title: "Failed to fetch roles", - description: - e.message || - "An error occurred while fetching the roles", + description: formatAxiosError( + e, + "An error occurred while fetching the roles" + ), }); }); @@ -109,9 +111,10 @@ export default function DeleteRoleForm({ toast({ variant: "destructive", title: "Failed to remove role", - description: - e.response?.data?.message || - "An error occurred while removing the role.", + description: formatAxiosError( + e, + "An error occurred while removing the role." + ), }); }); diff --git a/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx b/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx index 62992860..e9a8e54e 100644 --- a/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx +++ b/src/app/[orgId]/settings/access/users/[userId]/access-controls/page.tsx @@ -28,6 +28,8 @@ import { ListRolesResponse } from "@server/routers/role"; import { userOrgUserContext } from "@app/hooks/useOrgUserContext"; import { useParams } from "next/navigation"; import { Button } from "@app/components/ui/button"; +import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; +import { formatAxiosError } from "@app/lib/utils"; const formSchema = z.object({ email: z.string().email({ message: "Please enter a valid email" }), @@ -60,9 +62,10 @@ export default function AccessControlsPage() { toast({ variant: "destructive", title: "Failed to fetch roles", - description: - e.message || - "An error occurred while fetching the roles", + description: formatAxiosError( + e, + "An error occurred while fetching the roles" + ), }); }); @@ -87,9 +90,10 @@ export default function AccessControlsPage() { toast({ variant: "destructive", title: "Failed to add user to role", - description: - e.response?.data?.message || - "An error occurred while adding user to the role.", + description: formatAxiosError( + e, + "An error occurred while adding user to the role." + ), }); }); @@ -106,14 +110,11 @@ export default function AccessControlsPage() { return ( <> -
- Manage what this user can access and do in the organization -
-- Configure the general settings for this resource -
-- Configure the settings on your resource -
-- Create secure proxies to your private applications. -
-- Configure the general settings for this site -
-- Configure the settings on your site -
-- Manage your existing sites here or create a new one. -
-{description}