mirror of
https://github.com/documenso/documenso.git
synced 2026-07-11 21:45:18 +10:00
9ac7b94d9a
Allow organisations to manage an SSO OIDC compliant portal. This method is intended to streamline the onboarding process and paves the way to allow organisations to manage their members in a more strict way.
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { Hono } from 'hono';
|
|
|
|
import { AppError } from '@documenso/lib/errors/app-error';
|
|
|
|
import { GoogleAuthOptions, OidcAuthOptions } from '../config';
|
|
import { handleOAuthCallbackUrl } from '../lib/utils/handle-oauth-callback-url';
|
|
import { handleOAuthOrganisationCallbackUrl } from '../lib/utils/handle-oauth-organisation-callback-url';
|
|
import type { HonoAuthContext } from '../types/context';
|
|
|
|
/**
|
|
* Have to create this route instead of bundling callback with oauth routes to provide
|
|
* backwards compatibility for self-hosters (since we used to use NextAuth).
|
|
*/
|
|
export const callbackRoute = new Hono<HonoAuthContext>()
|
|
/**
|
|
* OIDC callback verification.
|
|
*/
|
|
.get('/oidc', async (c) => handleOAuthCallbackUrl({ c, clientOptions: OidcAuthOptions }))
|
|
|
|
/**
|
|
* Organisation OIDC callback verification.
|
|
*/
|
|
.get('/oidc/org/:orgUrl', async (c) => {
|
|
const orgUrl = c.req.param('orgUrl');
|
|
|
|
try {
|
|
return await handleOAuthOrganisationCallbackUrl({
|
|
c,
|
|
orgUrl,
|
|
});
|
|
} catch (err) {
|
|
console.error(err);
|
|
|
|
if (err instanceof Error) {
|
|
throw new AppError(err.name, {
|
|
message: err.message,
|
|
statusCode: 500,
|
|
});
|
|
}
|
|
|
|
throw err;
|
|
}
|
|
})
|
|
|
|
/**
|
|
* Google callback verification.
|
|
*/
|
|
.get('/google', async (c) => handleOAuthCallbackUrl({ c, clientOptions: GoogleAuthOptions }));
|