Fix user cant load modal

This commit is contained in:
sianida26 2024-03-29 03:43:38 +07:00
parent f21c3bfb12
commit 5329925090
6 changed files with 30 additions and 20 deletions

View File

@ -2,8 +2,8 @@ import { Card, Stack, Title } from "@mantine/core";
import React from "react"; import React from "react";
import getUsers from "@/modules/userManagement/actions/getAllUsers"; import getUsers from "@/modules/userManagement/actions/getAllUsers";
import { Metadata } from "next"; import { Metadata } from "next";
import checkMultiplePermissions from "@/modules/dashboard/services/checkMultiplePermissions";
import UsersTable from "@/modules/userManagement/tables/UsersTable/UsersTable"; import UsersTable from "@/modules/userManagement/tables/UsersTable/UsersTable";
import checkMultiplePermissions from "@/modules/auth/utils/checkMultiplePermissions";
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Users - Dashboard", title: "Users - Dashboard",
@ -14,9 +14,9 @@ export default async function UsersPage() {
const permissions = await checkMultiplePermissions({ const permissions = await checkMultiplePermissions({
create: "users.create", create: "users.create",
readAll: "users.readAll", readAll: "users.readAll",
read: "permission.read", read: "users.read",
update: "permission.update", update: "users.update",
delete: "permission.delete", delete: "users.delete",
}); });
const users = await getUsers(); const users = await getUsers();

View File

@ -17,7 +17,6 @@ async function checkMultiplePermissions<
| "authenticated-only" | "authenticated-only"
| "*" | "*"
| PermissionCode | PermissionCode
| (string & {})
> >
>(permissions: T): Promise<{ [K in keyof T]: boolean }> { >(permissions: T): Promise<{ [K in keyof T]: boolean }> {
const permissionResults: Partial<{ [K in keyof T]: boolean }> = {}; const permissionResults: Partial<{ [K in keyof T]: boolean }> = {};

View File

@ -52,6 +52,12 @@ const permissionData = [
isActive: true, isActive: true,
}, },
// User group // User group
{
code: "users.create",
name: "Create user",
description: "Allows creating a user",
isActive: true,
},
{ {
code: "users.read", code: "users.read",
name: "Read user", name: "Read user",

View File

@ -1,15 +1,12 @@
"use client"; "use client";
import CrudPermissions from "@/modules/dashboard/types/CrudPermissions"; import CrudPermissions from "@/modules/dashboard/types/CrudPermissions";
import { Table, Text, Flex, Button, Center } from "@mantine/core"; import { Text, Flex, Button } from "@mantine/core";
import { import {
flexRender,
getCoreRowModel, getCoreRowModel,
useReactTable, useReactTable,
} from "@tanstack/react-table"; } from "@tanstack/react-table";
import React, { useState } from "react"; import React, { useState } from "react";
import { TbPlus } from "react-icons/tb"; import { TbPlus } from "react-icons/tb";
import getPermissions from "../../actions/getAllPermissions";
import getAllPermissions from "../../actions/getAllPermissions";
import FormModal, { ModalProps } from "../../modals/PermissionFormModal"; import FormModal, { ModalProps } from "../../modals/PermissionFormModal";
import DeleteModal, { DeleteModalProps } from "../../modals/PermissionDeleteModal"; import DeleteModal, { DeleteModalProps } from "../../modals/PermissionDeleteModal";
import Permission from "../../types/Permission"; import Permission from "../../types/Permission";

View File

@ -1,15 +1,13 @@
"use client"; "use client";
import CrudPermissions from "@/modules/dashboard/types/CrudPermissions"; import CrudPermissions from "@/modules/dashboard/types/CrudPermissions";
import { Table, Text, Flex, Button, Center } from "@mantine/core"; import { Text, Flex, Button } from "@mantine/core";
import { import { getCoreRowModel, useReactTable } from "@tanstack/react-table";
flexRender, import React, { useMemo, useState } from "react";
getCoreRowModel,
useReactTable,
} from "@tanstack/react-table";
import React, { useState } from "react";
import { TbPlus } from "react-icons/tb"; import { TbPlus } from "react-icons/tb";
import UserFormModal, { ModalProps } from "../../modals/UserFormModal"; import UserFormModal, { ModalProps } from "../../modals/UserFormModal";
import UserDeleteModal, { DeleteModalProps } from "../../modals/UserDeleteModal"; import UserDeleteModal, {
DeleteModalProps,
} from "../../modals/UserDeleteModal";
import createColumns from "./columns"; import createColumns from "./columns";
import getAllUsers from "../../actions/getAllUsers"; import getAllUsers from "../../actions/getAllUsers";
import DashboardTable from "@/modules/dashboard/components/DashboardTable"; import DashboardTable from "@/modules/dashboard/components/DashboardTable";
@ -20,7 +18,9 @@ interface Props {
} }
export default function UsersTable(props: Props) { export default function UsersTable(props: Props) {
const [modalProps, setModalProps] = useState<ModalProps>({ const [modalProps, setModalProps] = useState<ModalProps>({
id: "",
opened: false, opened: false,
title: "", title: "",
}); });
@ -31,8 +31,16 @@ export default function UsersTable(props: Props) {
data: undefined, data: undefined,
}); });
const userData = useMemo(
() => props.userData.map((data) => ({
...data,
roles: data.roles.map((x) => x.name),
})),
[props.userData]
);
const table = useReactTable({ const table = useReactTable({
data: props.userData.map(data => ({...data, roles: data.roles.map(x => x.name)})), data: userData,
columns: createColumns({ columns: createColumns({
permissions: props.permissions, permissions: props.permissions,
actions: { actions: {
@ -111,7 +119,7 @@ export default function UsersTable(props: Props) {
</Button> </Button>
)} )}
</Flex> </Flex>
<DashboardTable table={table} /> <DashboardTable table={table} />
<UserFormModal {...modalProps} onClose={closeModal} /> <UserFormModal {...modalProps} onClose={closeModal} />

View File

@ -73,7 +73,7 @@ const createColumns = (options: ColumnOptions) => {
columnHelper.display({ columnHelper.display({
id: "status", id: "status",
header: "Status", header: "Status",
cell: (props) => <Badge color="green">Active</Badge>, cell: () => <Badge color="green">Active</Badge>,
}), }),
columnHelper.display({ columnHelper.display({