42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
|
import jackson, { IAPIController, IOAuthController, JacksonOption } from "@boxyhq/saml-jackson";
|
||
|
|
||
|
import { BASE_URL } from "@lib/config/constants";
|
||
|
import { samlDatabaseUrl } from "@lib/saml";
|
||
|
|
||
|
// Set the required options. Refer to https://github.com/boxyhq/jackson#configuration for the full list
|
||
|
const opts: JacksonOption = {
|
||
|
externalUrl: BASE_URL,
|
||
|
samlPath: "/api/auth/saml/callback",
|
||
|
db: {
|
||
|
engine: "sql",
|
||
|
type: "postgres",
|
||
|
url: samlDatabaseUrl,
|
||
|
encryptionKey: process.env.CALENDSO_ENCRYPTION_KEY,
|
||
|
},
|
||
|
samlAudience: "https://saml.cal.com",
|
||
|
};
|
||
|
|
||
|
let apiController: IAPIController;
|
||
|
let oauthController: IOAuthController;
|
||
|
|
||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||
|
const g = global as any;
|
||
|
|
||
|
export default async function init() {
|
||
|
if (!g.apiController || !g.oauthController) {
|
||
|
const ret = await jackson(opts);
|
||
|
apiController = ret.apiController;
|
||
|
oauthController = ret.oauthController;
|
||
|
g.apiController = apiController;
|
||
|
g.oauthController = oauthController;
|
||
|
} else {
|
||
|
apiController = g.apiController;
|
||
|
oauthController = g.oauthController;
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
apiController,
|
||
|
oauthController,
|
||
|
};
|
||
|
}
|