35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { createRoute } from "../../modules/api-utils/createRoute";
|
|
import { apiResponse } from "../../modules/api-utils/apiResponse";
|
|
import { ContentfulStatusCode } from "hono/utils/http-status";
|
|
import { authMiddleware } from "../middleware/authorization";
|
|
import { PERMISSION_NODES } from "../../types/PermissionNodes";
|
|
import GenericError from "../../Errors/GenericError";
|
|
|
|
/* /v1/permissions/:category */
|
|
export default createRoute(
|
|
"get",
|
|
["/:category"],
|
|
|
|
async (c) => {
|
|
const categoryKey = c.req.param(
|
|
"category",
|
|
) as keyof typeof PERMISSION_NODES;
|
|
|
|
if (!(categoryKey in PERMISSION_NODES)) {
|
|
throw new GenericError({
|
|
name: "NotFound",
|
|
message: `Permission category "${categoryKey}" not found`,
|
|
status: 404,
|
|
cause: `Valid categories: ${Object.keys(PERMISSION_NODES).join(", ")}`,
|
|
});
|
|
}
|
|
|
|
const response = apiResponse.successful(
|
|
"Permission Category Fetched Successfully!",
|
|
PERMISSION_NODES[categoryKey],
|
|
);
|
|
return c.json(response, response.status as ContentfulStatusCode);
|
|
},
|
|
authMiddleware({ permissions: ["role.read"] }),
|
|
);
|