diff --git a/ui/app/(prowler)/roles/page.tsx b/ui/app/(prowler)/roles/page.tsx index 07b77bf7e6..e7603bc9fa 100644 --- a/ui/app/(prowler)/roles/page.tsx +++ b/ui/app/(prowler)/roles/page.tsx @@ -3,7 +3,7 @@ import { Suspense } from "react"; import { getRoles } from "@/actions/roles"; import { FilterControls } from "@/components/filters"; -import { filterInvitations } from "@/components/filters/data-filters"; +import { filterRoles } from "@/components/filters/data-filters"; import { AddRoleButton } from "@/components/roles"; import { ColumnsRoles } from "@/components/roles/table"; import { SkeletonTableRoles } from "@/components/roles/table"; @@ -26,7 +26,7 @@ export default async function Roles({ - + }> diff --git a/ui/components/filters/data-filters.ts b/ui/components/filters/data-filters.ts index 9400dc427b..4b40aff8e6 100644 --- a/ui/components/filters/data-filters.ts +++ b/ui/components/filters/data-filters.ts @@ -72,3 +72,11 @@ export const filterInvitations = [ values: ["pending", "accepted", "expired", "revoked"], }, ]; + +export const filterRoles = [ + { + key: "permission_state", + labelCheckboxGroup: "Permissions", + values: ["unlimited", "limited", "none"], + }, +]; diff --git a/ui/components/roles/table/column-roles.tsx b/ui/components/roles/table/column-roles.tsx index 28d886e2fb..e3e162bf5e 100644 --- a/ui/components/roles/table/column-roles.tsx +++ b/ui/components/roles/table/column-roles.tsx @@ -42,7 +42,7 @@ export const ColumnsRoles: ColumnDef[] = [ const relationships = getRoleRelationships(row); const count = relationships.users.meta.count; return ( -

+

{count === 0 ? "No Users" : `${count} ${count === 1 ? "User" : "Users"}`} @@ -62,7 +62,7 @@ export const ColumnsRoles: ColumnDef[] = [ cell: ({ row }) => { const relationships = getRoleRelationships(row); return ( -

+

{relationships.invitations.meta.count === 0 ? "No Invitations" : `${relationships.invitations.meta.count} ${ @@ -74,26 +74,31 @@ export const ColumnsRoles: ColumnDef[] = [ ); }, }, - // { - // accessorKey: "updated_at", - // header: ({ column }) => ( - // - // ), - // cell: ({ row }) => { - // const { updated_at } = getRoleAttributes(row); - // return ; - // }, - // }, + { + accessorKey: "permission_state", + header: ({ column }) => ( + + ), + cell: ({ row }) => { + const { permission_state } = getRoleAttributes(row); + return ( +

+ {permission_state[0].toUpperCase() + + permission_state.slice(1).toLowerCase()} +

+ ); + }, + }, { accessorKey: "inserted_at", header: ({ column }) => ( ), diff --git a/ui/types/components.ts b/ui/types/components.ts index 77c8785747..561e6b2d86 100644 --- a/ui/types/components.ts +++ b/ui/types/components.ts @@ -247,6 +247,7 @@ export interface RolesProps { manage_integrations: boolean; manage_scans: boolean; unlimited_visibility: boolean; + permission_state: "unlimited" | "limited" | "none"; inserted_at: string; updated_at: string; };