110 lines
2.2 KiB
TypeScript
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"));
|
|
}
|