UPDATE: add routes to login with idp

This commit is contained in:
marcos-silva-rodrigues
2025-03-25 09:18:27 -03:00
parent ea9c0502b7
commit f1345472b5
8 changed files with 377 additions and 34 deletions
+36 -4
View File
@@ -27,6 +27,7 @@ import {
AuthEnableTotpMfaRequest,
AuthDisableTotpMfaRequest,
AuthVerifyTotpMfaRequest,
IdProvider,
} from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages';
import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum';
@@ -52,7 +53,7 @@ import jwt from 'jsonwebtoken';
import { LanguageEnum } from 'src/utils/languages.enum';
import { Language } from 'src/decorators/language.decorator';
import { ApiInternalOnlyEndpoint } from 'src/decorators/swagger.decorator';
import { CreateIdentityProvider } from './dtos/openid';
import { CreatedIdentityProvider, CreateIdentityProvider } from './dtos/openid';
@ApiTags('Auth')
@ApiHeaders([{ name: 'dadosfera-lang', enum: LanguageEnum, required: false }])
@@ -112,11 +113,10 @@ export class AuthController {
@Post('/idp')
@HttpCode(HttpStatus.OK)
@ApiOkResponse({ type: AuthRefreshAccessTokenRes })
@RequireAllPermissions(PERMISSIONS_GROUPS.SNOWFLAKE.permissions.OPEN)
@ApiOkResponse({ type: CreatedIdentityProvider })
async addIdentityProvider(
@User() user: RequestUser,
@Body() body: CreateIdentityProvider,
@Body() body: IdProvider,
@Language() language: LanguageEnum,
) {
this.logger.info('/auth - RefreshAccessToken');
@@ -129,6 +129,38 @@ export class AuthController {
return this.authClient.createIdentityProvider(body, metadata);
}
@Get('/idp/:name')
@HttpCode(HttpStatus.OK)
@Redirect()
async loginIdp(
@Body() body: { name: string },
@Req() req: Request,
) {
this.logger.info('/auth - RefreshAccessToken');
const redirectUrl = this.authClient.loginIdp(body.name, req);
return {
url: redirectUrl,
};
}
@Get('/idp/:name/callback')
@HttpCode(HttpStatus.OK)
@ApiOkResponse({ type: AuthRefreshAccessTokenRes })
@Redirect()
@RequireAllPermissions(PERMISSIONS_GROUPS.SNOWFLAKE.permissions.OPEN)
async callbackIdp(
@Param('name') name: string,
@Req() req: Request,
) {
this.logger.info('/auth - RefreshAccessToken');
const redirectUrl = this.authClient.authorizeIdp(name, req);
return {
url: redirectUrl,
};
}
@ApiInternalOnlyEndpoint()
@Post('/sso/snowflake')
@RequireAllPermissions(PERMISSIONS_GROUPS.SNOWFLAKE.permissions.OPEN)