Files
permit-api/src/organization/organization.route.ts

110 lines
2.2 KiB
TypeScript

import { FastifyInstance } from "fastify";
import { $org } from "./organization.schema";
import {
createOrgHandler,
deleteOrgHandler,
getOrgHandler,
getUniqueFieldValuesOrg,
listOrgsHandler,
searchOrgHandler,
updateOrgHandler,
} from "./organization.controller";
import { hideFields } from "../auth";
export default function organizationRoutes(fastify: FastifyInstance) {
fastify.post(
"/",
{
schema: {
body: $org("createOrgInput"),
},
config: { requiredClaims: ["org:write"] },
preHandler: [fastify.authorize],
},
createOrgHandler
);
fastify.get(
"/:orgId",
{
schema: {
params: {
type: "object",
properties: {
orgId: { type: "string" },
},
},
},
config: { requiredClaims: ["org:read"] },
preHandler: [fastify.authorize],
},
getOrgHandler
);
fastify.get(
"/",
{
schema: {
querystring: $org("pageQueryParams"),
},
config: { requiredClaims: ["org:read"] },
preHandler: [fastify.authorize],
},
listOrgsHandler
);
fastify.patch(
"/:orgId",
{
schema: {
params: { type: "object", properties: { orgId: { type: "string" } } },
body: $org("updateOrgInput"),
},
config: { requiredClaims: ["org:write"] },
preHandler: [fastify.authorize],
},
updateOrgHandler
);
fastify.delete(
"/:orgId",
{
schema: {
params: { type: "object", properties: { orgId: { type: "string" } } },
},
config: { requiredClaims: ["org:delete"] },
preHandler: [fastify.authorize],
},
deleteOrgHandler
);
fastify.get(
"/search",
{
schema: {
querystring: $org("pageQueryParams"),
},
config: { requiredClaims: ["org:read"] },
preHandler: [fastify.authorize],
},
searchOrgHandler
);
fastify.get(
"/fields/:field",
{
schema: {
params: {
type: "object",
properties: { field: { type: "string" } },
},
},
config: { requiredClaims: ["org:read"] },
preHandler: [fastify.authorize],
},
getUniqueFieldValuesOrg
);
fastify.addHook("onSend", hideFields("orgs"));
}