jackson/ee/identity-federation/api/admin/index.ts

50 lines
1.3 KiB
TypeScript

import type { NextApiRequest, NextApiResponse } from 'next';
import jackson from '@lib/jackson';
import { defaultHandler } from '@lib/api';
import { parsePaginateApiParams } from '@lib/utils';
import { validateDevelopmentModeLimits } from '@lib/development-mode';
const handler = async (req: NextApiRequest, res: NextApiResponse) => {
await defaultHandler(req, res, {
GET: handleGET,
POST: handlePOST,
});
};
// Create new Identity Federation app
const handlePOST = async (req: NextApiRequest, res: NextApiResponse) => {
const { samlFederatedController } = await jackson();
await validateDevelopmentModeLimits(
req.body.product,
'samlFederation',
'Maximum number of federation apps reached'
);
const app = await samlFederatedController.app.create(req.body);
res.status(201).json({ data: app });
};
// Get Identity Federation apps
const handleGET = async (req: NextApiRequest, res: NextApiResponse) => {
const { samlFederatedController } = await jackson();
const { pageOffset, pageLimit, pageToken } = parsePaginateApiParams(req.query);
const apps = await samlFederatedController.app.getAll({
pageOffset,
pageLimit,
pageToken,
});
if (apps.pageToken) {
res.setHeader('jackson-pagetoken', apps.pageToken);
}
res.json({ data: apps.data });
};
export default handler;