From edcc7544fb4643b662fbb43433572f719a2a52ee Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Sat, 22 Jun 2024 20:23:06 -0600 Subject: [PATCH] feat: add access to API/CLI support --- .../settings/users/add-permissions.tsx | 23 + drizzle/0016_chunky_leopardon.sql | 1 + drizzle/meta/0016_snapshot.json | 2620 +++++++++++++++++ drizzle/meta/_journal.json | 7 + server/api/routers/admin.ts | 16 +- server/db/schema/user.ts | 2 + 6 files changed, 2660 insertions(+), 9 deletions(-) create mode 100644 drizzle/0016_chunky_leopardon.sql create mode 100644 drizzle/meta/0016_snapshot.json diff --git a/components/dashboard/settings/users/add-permissions.tsx b/components/dashboard/settings/users/add-permissions.tsx index cf80803d..b17f2004 100644 --- a/components/dashboard/settings/users/add-permissions.tsx +++ b/components/dashboard/settings/users/add-permissions.tsx @@ -38,6 +38,7 @@ const addPermissions = z.object({ canDeleteServices: z.boolean().optional().default(false), canAccessToTraefikFiles: z.boolean().optional().default(false), canAccessToDocker: z.boolean().optional().default(false), + canAccessToAPI: z.boolean().optional().default(false), }); type AddPermissions = z.infer; @@ -80,6 +81,7 @@ export const AddUserPermissions = ({ userId }: Props) => { canDeleteServices: data.canDeleteServices, canAccessToTraefikFiles: data.canAccessToTraefikFiles, canAccessToDocker: data.canAccessToDocker, + canAccessToAPI: data.canAccessToAPI, }); } }, [form, form.formState.isSubmitSuccessful, form.reset, data]); @@ -95,6 +97,7 @@ export const AddUserPermissions = ({ userId }: Props) => { accesedProjects: data.accesedProjects || [], accesedServices: data.accesedServices || [], canAccessToDocker: data.canAccessToDocker, + canAccessToAPI: data.canAccessToAPI, }) .then(async () => { toast.success("Permissions updated"); @@ -247,6 +250,26 @@ export const AddUserPermissions = ({ userId }: Props) => { )} /> + ( + +
+ Access to API/CLI + + Allow the user to access to the API/CLI + +
+ + + +
+ )} + /> { - const { sshPrivateKey, ...rest } = await findAdmin(); - return { - haveSSH: !!sshPrivateKey, - ...rest, - }; - }), + one: adminProcedure.query(async () => { + const { sshPrivateKey, ...rest } = await findAdmin(); + return { + haveSSH: !!sshPrivateKey, + ...rest, + }; + }), createUserInvitation: adminProcedure .input(apiCreateUserInvitation) .mutation(async ({ input }) => { diff --git a/server/db/schema/user.ts b/server/db/schema/user.ts index 915ff75e..9a8d49db 100644 --- a/server/db/schema/user.ts +++ b/server/db/schema/user.ts @@ -32,6 +32,7 @@ export const users = pgTable("user", { canDeleteProjects: boolean("canDeleteProjects").notNull().default(false), canDeleteServices: boolean("canDeleteServices").notNull().default(false), canAccessToDocker: boolean("canAccessToDocker").notNull().default(false), + canAccessToAPI: boolean("canAccessToAPI").notNull().default(false), canAccessToTraefikFiles: boolean("canAccessToTraefikFiles") .notNull() .default(false), @@ -105,6 +106,7 @@ export const apiAssignPermissions = createSchema accesedServices: true, canAccessToTraefikFiles: true, canAccessToDocker: true, + canAccessToAPI: true, }) .required();