feat: add permission column to roles table

This commit is contained in:
Pablo Lara
2024-12-10 11:28:10 +01:00
parent 577530ac69
commit b0a98b1a87
4 changed files with 33 additions and 19 deletions
+2 -2
View File
@@ -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({
<Spacer y={8} />
<AddRoleButton />
<Spacer y={4} />
<DataTableFilterCustom filters={filterInvitations || []} />
<DataTableFilterCustom filters={filterRoles || []} />
<Spacer y={8} />
<Suspense key={searchParamsKey} fallback={<SkeletonTableRoles />}>
+8
View File
@@ -72,3 +72,11 @@ export const filterInvitations = [
values: ["pending", "accepted", "expired", "revoked"],
},
];
export const filterRoles = [
{
key: "permission_state",
labelCheckboxGroup: "Permissions",
values: ["unlimited", "limited", "none"],
},
];
+22 -17
View File
@@ -42,7 +42,7 @@ export const ColumnsRoles: ColumnDef<RolesProps["data"][number]>[] = [
const relationships = getRoleRelationships(row);
const count = relationships.users.meta.count;
return (
<p className="font-semibold">
<p className="text-xs font-semibold">
{count === 0
? "No Users"
: `${count} ${count === 1 ? "User" : "Users"}`}
@@ -62,7 +62,7 @@ export const ColumnsRoles: ColumnDef<RolesProps["data"][number]>[] = [
cell: ({ row }) => {
const relationships = getRoleRelationships(row);
return (
<p className="font-semibold">
<p className="text-xs font-semibold">
{relationships.invitations.meta.count === 0
? "No Invitations"
: `${relationships.invitations.meta.count} ${
@@ -74,26 +74,31 @@ export const ColumnsRoles: ColumnDef<RolesProps["data"][number]>[] = [
);
},
},
// {
// accessorKey: "updated_at",
// header: ({ column }) => (
// <DataTableColumnHeader
// column={column}
// title={"Updated At"}
// param="updated_at"
// />
// ),
// cell: ({ row }) => {
// const { updated_at } = getRoleAttributes(row);
// return <DateWithTime dateTime={updated_at} showTime={false} />;
// },
// },
{
accessorKey: "permission_state",
header: ({ column }) => (
<DataTableColumnHeader
column={column}
title={"Permissions"}
param="permission_state"
/>
),
cell: ({ row }) => {
const { permission_state } = getRoleAttributes(row);
return (
<p className="text-xs font-semibold">
{permission_state[0].toUpperCase() +
permission_state.slice(1).toLowerCase()}
</p>
);
},
},
{
accessorKey: "inserted_at",
header: ({ column }) => (
<DataTableColumnHeader
column={column}
title={"Added At"}
title={"Added"}
param="inserted_at"
/>
),
+1
View File
@@ -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;
};