From c355f1c307f1a56b797f54d13eee82b8af7db098 Mon Sep 17 00:00:00 2001 From: Sacha Al Himdani Date: Tue, 9 Dec 2025 17:28:13 +0100 Subject: [PATCH] Make employee role assignable Signed-off-by: Sacha Al Himdani --- .../src/components/organizations/InviteUserDialog.tsx | 6 +++++- .../src/pages/organizations/settings/MembersSettingsTab.tsx | 4 ++++ packages/helpers/src/roles.ts | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/console/src/components/organizations/InviteUserDialog.tsx b/apps/console/src/components/organizations/InviteUserDialog.tsx index ff32a5de0..ec7c3e16b 100644 --- a/apps/console/src/components/organizations/InviteUserDialog.tsx +++ b/apps/console/src/components/organizations/InviteUserDialog.tsx @@ -45,7 +45,7 @@ const inviteMutation = graphql` const schema = z.object({ email: z.string().email(), fullName: z.string(), - role: z.enum(["OWNER", "ADMIN", "FULL", "VIEWER"]).default("VIEWER"), + role: z.enum(["OWNER", "ADMIN", "FULL", "VIEWER", "EMPLOYEE"]).default("VIEWER"), createPeople: z.boolean().default(false), }); @@ -126,6 +126,7 @@ function InviteUserDialogContent({ children, connectionId, onRefetch }: Props) { {assignableRoles.includes("OWNER") && } {assignableRoles.includes("ADMIN") && } {assignableRoles.includes("VIEWER") && } + {assignableRoles.includes("EMPLOYEE") && }
{field.value === "OWNER" && ( @@ -137,6 +138,9 @@ function InviteUserDialogContent({ children, connectionId, onRefetch }: Props) { {field.value === "VIEWER" && (

{__("Read-only access")}

)} + {field.value === "EMPLOYEE" && ( +

{__("Access to employee page")}

+ )}
)} diff --git a/apps/console/src/pages/organizations/settings/MembersSettingsTab.tsx b/apps/console/src/pages/organizations/settings/MembersSettingsTab.tsx index 7924c5d78..be5f6e810 100644 --- a/apps/console/src/pages/organizations/settings/MembersSettingsTab.tsx +++ b/apps/console/src/pages/organizations/settings/MembersSettingsTab.tsx @@ -535,6 +535,7 @@ function MembershipRowContent(props: { {availableRoles.includes("OWNER") && } {availableRoles.includes("ADMIN") && } {availableRoles.includes("VIEWER") && } + {availableRoles.includes("EMPLOYEE") && } @@ -548,6 +549,9 @@ function MembershipRowContent(props: { {selectedRole === "VIEWER" && (

{__("Read-only access")}

)} + {selectedRole === "EMPLOYEE" && ( +

{__("Access to employee page")}

+ )} diff --git a/packages/helpers/src/roles.ts b/packages/helpers/src/roles.ts index e67ce6fcc..c17e01fb8 100644 --- a/packages/helpers/src/roles.ts +++ b/packages/helpers/src/roles.ts @@ -9,11 +9,11 @@ export type Role = (typeof Role)[keyof typeof Role]; export function getAssignableRoles(currentRole: Role): Role[] { if (currentRole === Role.OWNER) { - return [Role.OWNER, Role.ADMIN, Role.VIEWER]; + return [Role.OWNER, Role.ADMIN, Role.VIEWER, Role.EMPLOYEE]; } if (currentRole === Role.ADMIN) { - return [Role.ADMIN, Role.VIEWER]; + return [Role.ADMIN, Role.VIEWER, Role.EMPLOYEE]; } return [];