/* * Copyright (c) 2022. * Author Peter Placzek (tada5hi) * For the full copyright and license information, * view the LICENSE file that was distributed with this source code. */ import { DBody, DController, DDelete, DGet, DPath, DPost, DRequest, DResponse, DTags, } from '@routup/decorators'; import type { Next, Request, Response, Router, } from 'routup'; import type { IdentityProvider } from '@authup/common'; import { buildIdentityProviderAuthorizeCallbackPath, buildIdentityProviderAuthorizePath, } from '@authup/common'; import { authorizeCallbackIdentityProviderRouteHandler, authorizeURLIdentityProviderRouteHandler, createIdentityProviderRouteHandler, deleteIdentityProviderRouteHandler, getManyIdentityProviderRouteHandler, getOneIdentityProviderRouteHandler, updateIdentityProviderRouteHandler, } from './handlers'; import { ForceLoggedInMiddleware } from '../../middleware'; @DTags('identity') @DController('/identity-providers') export class IdentityProviderController { @DGet('', []) async getProviders( @DRequest() req: any, @DResponse() res: any, ): Promise { return getManyIdentityProviderRouteHandler(req, res); } @DGet('/:id', []) async getProvider( @DPath('id') id: string, @DRequest() req: any, @DResponse() res: any, ): Promise { return getOneIdentityProviderRouteHandler(req, res); } @DPost('/:id', [ForceLoggedInMiddleware]) async editProvider( @DPath('id') id: string, @DBody() user: NonNullable, @DRequest() req: any, @DResponse() res: any, ) : Promise { return updateIdentityProviderRouteHandler(req, res); } @DDelete('/:id', [ForceLoggedInMiddleware]) async dropProvider( @DPath('id') id: string, @DRequest() req: any, @DResponse() res: any, ) : Promise { return deleteIdentityProviderRouteHandler(req, res); } @DPost('', [ForceLoggedInMiddleware]) async addProvider( @DBody() user: NonNullable, @DRequest() req: any, @DResponse() res: any, ) : Promise { return createIdentityProviderRouteHandler(req, res); } } export function registerIdentityProviderController(router: Router) { router.get(buildIdentityProviderAuthorizePath(':id'), async (req: Request, res: Response, next: Next) => { try { await authorizeURLIdentityProviderRouteHandler(req, res); } catch (e) { next(e); } }); router.get(buildIdentityProviderAuthorizeCallbackPath(':id'), async (req: Request, res: Response, next: Next) => { try { await authorizeCallbackIdentityProviderRouteHandler(req, res); } catch (e) { next(e); } }); }