diff --git a/src/app/dashboard/permissions/page.tsx b/src/app/dashboard/permissions/page.tsx index 83f89ae..135bd44 100644 --- a/src/app/dashboard/permissions/page.tsx +++ b/src/app/dashboard/permissions/page.tsx @@ -1,4 +1,4 @@ -import checkMultiplePermissions from "@/modules/dashboard/services/checkMultiplePermissions"; +import checkMultiplePermissions from "@/modules/auth/utils/checkMultiplePermissions"; import getAllPermissions from "@/modules/permission/actions/getAllPermissions"; import PermissionsTable from "@/modules/permission/tables/PermissionTable/PermissionTable"; import { Card, Stack, Title } from "@mantine/core"; @@ -20,11 +20,11 @@ export const metadata: Metadata = { export default async function RolesPage({ searchParams }: Props) { const permissions = await checkMultiplePermissions({ - create: "permission.create", - readAll: "permission.readAll", - read: "permission.read", - update: "permission.update", - delete: "permission.delete", + create: "permissions.create", + readAll: "permissions.readAll", + read: "permissions.read", + update: "permissions.update", + delete: "permissions.delete", }); const res = await getAllPermissions(); diff --git a/src/app/dashboard/roles/page.tsx b/src/app/dashboard/roles/page.tsx index a04a0f7..59ec619 100644 --- a/src/app/dashboard/roles/page.tsx +++ b/src/app/dashboard/roles/page.tsx @@ -1,4 +1,4 @@ -import checkMultiplePermissions from "@/modules/dashboard/services/checkMultiplePermissions"; +import checkMultiplePermissions from "@/modules/auth/utils/checkMultiplePermissions"; import unauthorized from "@/modules/dashboard/utils/unauthorized"; import getAllRoles from "@/modules/role/actions/getAllRoles"; import RolesTable from "@/modules/role/tables/RolesTable/RolesTable"; @@ -6,26 +6,17 @@ import { Card, Stack, Title } from "@mantine/core"; import { Metadata } from "next"; import React from "react"; -interface Props { - searchParams: { - detail?: string; - edit?: string; - delete?: string; - create?: string; - }; -} - export const metadata: Metadata = { title: "Roles - Dashboard", }; export default async function RolesPage() { const permissions = await checkMultiplePermissions({ - create: "role.create", - readAll: "role.readAll", - read: "role.read", - update: "role.update", - delete: "role.delete", + create: "roles.create", + readAll: "roles.readAll", + read: "roles.read", + update: "roles.update", + delete: "roles.delete", }); if (!permissions.readAll) unauthorized() diff --git a/src/modules/auth/utils/getUserRoles.ts b/src/modules/auth/utils/getUserRoles.ts index 838e597..4ce4191 100644 --- a/src/modules/auth/utils/getUserRoles.ts +++ b/src/modules/auth/utils/getUserRoles.ts @@ -1,4 +1,4 @@ -import { RoleCode } from "@/modules/permission/data/initialRoles"; +import { RoleCode } from "@/modules/role/data/initialRoles"; import getCurrentUser from "./getCurrentUser"; export default async function getUserRoles(): Promise { diff --git a/src/modules/dashboard/services/checkMultiplePermissions.ts b/src/modules/dashboard/services/checkMultiplePermissions.ts deleted file mode 100644 index 758b1b7..0000000 --- a/src/modules/dashboard/services/checkMultiplePermissions.ts +++ /dev/null @@ -1,35 +0,0 @@ -import "server-only"; -import checkPermission from "@/modules/auth/utils/checkPermission"; -import getCurrentUser from "@/modules/auth/utils/getCurrentUser"; - -/** - * Checks multiple permissions for the current user and returns an object indicating - * whether each permission is granted. - * - * Deprecated. Use `checkMultiplePermission()` from auth module instead. - * - * @deprecated - * @param permissions - An object with keys as permission names and values as the required roles/permissions. - * @returns An object with keys as permission names and boolean values indicating whether the permission is granted. - */ -async function checkMultiplePermissions>( - permissions: T -): Promise<{ [K in keyof T]: boolean }> { - const permissionResults: Partial<{ [K in keyof T]: boolean }> = {}; - const currentUser = await getCurrentUser(); - - for (const permissionKey in permissions) { - if (permissions.hasOwnProperty(permissionKey)) { - const requiredPermission = permissions[permissionKey]; - const isPermissionGranted = await checkPermission( - requiredPermission, - currentUser - ); - permissionResults[permissionKey] = isPermissionGranted; - } - } - - return permissionResults as { [K in keyof T]: boolean }; -} - -export default checkMultiplePermissions; diff --git a/src/modules/dashboard/types/SidebarMenu.d.ts b/src/modules/dashboard/types/SidebarMenu.d.ts index 77716e7..35d3ed9 100644 --- a/src/modules/dashboard/types/SidebarMenu.d.ts +++ b/src/modules/dashboard/types/SidebarMenu.d.ts @@ -1,5 +1,5 @@ import { PermissionCode } from "@/modules/permission/data/initialPermissions"; -import { RoleCode } from "@/modules/permission/data/initialRoles"; +import { RoleCode } from "@/modules/role/data/initialRoles"; export default interface SidebarMenu { label: string; diff --git a/src/modules/permission/data/initialPermissions.ts b/src/modules/permission/data/initialPermissions.ts index c041fb8..d6be298 100644 --- a/src/modules/permission/data/initialPermissions.ts +++ b/src/modules/permission/data/initialPermissions.ts @@ -2,6 +2,12 @@ import { Permission } from "@prisma/client"; const permissionData = [ // Permission group + { + code: "permissions.create", + name: "Create permission", + description: "Allows creating a single permission", + isActive: true, + }, { code: "permissions.read", name: "Read permission", @@ -27,6 +33,12 @@ const permissionData = [ isActive: true, }, // Role group + { + code: "roles.create", + name: "Create role", + description: "Allows creating a single role", + isActive: true, + }, { code: "roles.read", name: "Read role", diff --git a/src/modules/permission/data/initialRoles.ts b/src/modules/role/data/initialRoles.ts similarity index 100% rename from src/modules/permission/data/initialRoles.ts rename to src/modules/role/data/initialRoles.ts