mirror of
https://github.com/dadosfera/maestro.git
synced 2026-10-29 04:09:09 +00:00
FEAT: update and delete identity provider
This commit is contained in:
+111
-20
@@ -5906,6 +5906,12 @@
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"access-token": []
|
||||
},
|
||||
{
|
||||
"access-token": []
|
||||
},
|
||||
{
|
||||
"access-token": []
|
||||
}
|
||||
@@ -5927,12 +5933,117 @@
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"access-token": []
|
||||
},
|
||||
{
|
||||
"access-token": []
|
||||
},
|
||||
{
|
||||
"access-token": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"/identity-providers/{id}": {
|
||||
"delete": {
|
||||
"operationId": "IdentityProviderController_deleteIdentityProvider",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"204": {
|
||||
"description": "",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"access-token": []
|
||||
},
|
||||
{
|
||||
"access-token": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"put": {
|
||||
"operationId": "IdentityProviderController_updateIdentityProviders",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"required": true,
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/CreateIdentityProvider"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "",
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"security": [
|
||||
{
|
||||
"access-token": []
|
||||
},
|
||||
{
|
||||
"access-token": []
|
||||
},
|
||||
{
|
||||
"access-token": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"get": {
|
||||
"operationId": "IdentityProviderController_loginIdp",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/identity-providers/callback": {
|
||||
"get": {
|
||||
"operationId": "IdentityProviderController_callbackIdp",
|
||||
@@ -5951,26 +6062,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"/identity-providers/{id}": {
|
||||
"get": {
|
||||
"operationId": "IdentityProviderController_loginIdp",
|
||||
"parameters": [
|
||||
{
|
||||
"name": "id",
|
||||
"required": true,
|
||||
"in": "path",
|
||||
"schema": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/network-policy": {
|
||||
"get": {
|
||||
"operationId": "NetworkPolicyController_getNetworks",
|
||||
|
||||
Generated
+4
-4
@@ -12,7 +12,7 @@
|
||||
"@aws-sdk/client-secrets-manager": "^3.414.0",
|
||||
"@dadosfera/dadosfera-logs": "^1.0.0-beta.4",
|
||||
"@dadosfera/protospack": "2.5.3",
|
||||
"@dadosfera/protospack-v2": "3.38.0-beta.6",
|
||||
"@dadosfera/protospack-v2": "3.38.0-beta.7",
|
||||
"@grpc/grpc-js": "^1.9.3",
|
||||
"@grpc/proto-loader": "^0.7.9",
|
||||
"@nestjs/cli": "^9.5.0",
|
||||
@@ -1407,9 +1407,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@dadosfera/protospack-v2": {
|
||||
"version": "3.38.0-beta.6",
|
||||
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.38.0-beta.6.tgz",
|
||||
"integrity": "sha512-nj60p/CCG8tTJ4xJCCsWJpoiiz6YqjFmKRhHlwWaMT2RXdOfhMwz1adNhbjaJAIlhXQ0rjb0wyZHzt5wAgtJvA==",
|
||||
"version": "3.38.0-beta.7",
|
||||
"resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.38.0-beta.7.tgz",
|
||||
"integrity": "sha512-Lp+hW/F/F9gMtrwBJCpFS8ekVfpEP4av8u8OQKSnTz8Cxc7MXC7OxD1BdKi0m05GuVpWEa5aCe+ZLWq0mhhjDw==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@grpc/grpc-js": "^1.9.3",
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
"@aws-sdk/client-secrets-manager": "^3.414.0",
|
||||
"@dadosfera/dadosfera-logs": "^1.0.0-beta.4",
|
||||
"@dadosfera/protospack": "2.5.3",
|
||||
"@dadosfera/protospack-v2": "3.38.0-beta.6",
|
||||
"@dadosfera/protospack-v2": "3.38.0-beta.7",
|
||||
"@grpc/grpc-js": "^1.9.3",
|
||||
"@grpc/proto-loader": "^0.7.9",
|
||||
"@nestjs/cli": "^9.5.0",
|
||||
|
||||
@@ -2,12 +2,15 @@ import DadosferaLogger from '@dadosfera/dadosfera-logs';
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
HttpCode,
|
||||
HttpStatus,
|
||||
Inject,
|
||||
Param,
|
||||
Patch,
|
||||
Post,
|
||||
Put,
|
||||
Redirect,
|
||||
Req,
|
||||
} from '@nestjs/common';
|
||||
@@ -17,10 +20,15 @@ import { Language } from 'src/decorators/language.decorator';
|
||||
import { LanguageEnum } from 'src/utils/languages.enum';
|
||||
import { PackTheMetadata } from 'src/utils/ PackTheMetadata';
|
||||
import { ApiOkResponse } from '@nestjs/swagger';
|
||||
import { CreateIdentityProvider, IdentityProviderListResponse, IdentityProviderResponse } from './dto/identity-provider.dto';
|
||||
import {
|
||||
CreateIdentityProvider,
|
||||
IdentityProviderListResponse,
|
||||
IdentityProviderResponse,
|
||||
} from './dto/identity-provider.dto';
|
||||
import { Request } from 'express';
|
||||
import ErrorCodes from 'src/utils/errorCodes';
|
||||
import { Authenticated } from 'src/decorators/authentication.decorator';
|
||||
import { Authenticated, RequireModule, RequireSomePermission } from 'src/decorators/authentication.decorator';
|
||||
import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum';
|
||||
|
||||
@Controller('identity-providers')
|
||||
export class IdentityProviderController {
|
||||
@@ -38,12 +46,14 @@ export class IdentityProviderController {
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOkResponse({ type: IdentityProviderResponse })
|
||||
@Authenticated()
|
||||
@RequireModule('sso')
|
||||
@RequireSomePermission(PERMISSIONS_GROUPS.USERS.permissions.ADMIN)
|
||||
async addIdentityProvider(
|
||||
@User() user: RequestUser,
|
||||
@Body() body: CreateIdentityProvider,
|
||||
@Language() language: LanguageEnum,
|
||||
) {
|
||||
this.logger.info('/openid - addIdentityProvider');
|
||||
this.logger.info('POST /identity-providers');
|
||||
|
||||
const metadata = PackTheMetadata({
|
||||
...user,
|
||||
@@ -57,6 +67,8 @@ export class IdentityProviderController {
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@ApiOkResponse({ type: IdentityProviderListResponse })
|
||||
@Authenticated()
|
||||
@RequireModule('sso')
|
||||
@RequireSomePermission(PERMISSIONS_GROUPS.USERS.permissions.ADMIN)
|
||||
async getProviders(
|
||||
@User() user: RequestUser,
|
||||
@Language() language: LanguageEnum,
|
||||
@@ -64,17 +76,56 @@ export class IdentityProviderController {
|
||||
this.logger.info('GET identity-providers');
|
||||
const metadata = PackTheMetadata({
|
||||
...user,
|
||||
language
|
||||
})
|
||||
language,
|
||||
});
|
||||
|
||||
const result = await this.identityProviderService.getList(metadata)
|
||||
return result
|
||||
const result = await this.identityProviderService.getList(metadata);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
@HttpCode(HttpStatus.NO_CONTENT)
|
||||
@RequireModule('sso')
|
||||
@RequireSomePermission(PERMISSIONS_GROUPS.USERS.permissions.ADMIN)
|
||||
async deleteIdentityProvider(
|
||||
@Param('id') id: string,
|
||||
@User() user: RequestUser,
|
||||
) {
|
||||
this.logger.info('DELETE /identity-providers');
|
||||
|
||||
const metadata = PackTheMetadata({
|
||||
...user,
|
||||
});
|
||||
|
||||
return await this.identityProviderService.deleteIdentityProvider(
|
||||
id,
|
||||
metadata,
|
||||
);
|
||||
}
|
||||
|
||||
@Put(':id')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@Authenticated()
|
||||
@RequireModule('sso')
|
||||
@RequireSomePermission(PERMISSIONS_GROUPS.USERS.permissions.ADMIN)
|
||||
async updateIdentityProviders(
|
||||
@Param('id') id: string,
|
||||
@Body() body: CreateIdentityProvider,
|
||||
@User() user: RequestUser,
|
||||
) {
|
||||
this.logger.info('PUT /identity-providers');
|
||||
|
||||
const metadata = PackTheMetadata({
|
||||
...user,
|
||||
});
|
||||
|
||||
return await this.identityProviderService.updateIdentityProviders(id, body, metadata);
|
||||
}
|
||||
|
||||
@Get('/callback')
|
||||
@HttpCode(HttpStatus.OK)
|
||||
async callbackIdp(@Req() req: Request) {
|
||||
this.logger.info('/callback');
|
||||
this.logger.info('GET /identity-providers/callback');
|
||||
const { code, state } = req.query;
|
||||
|
||||
if (!code) {
|
||||
@@ -94,12 +145,12 @@ export class IdentityProviderController {
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@Redirect()
|
||||
async loginIdp(@Param('id') id: string) {
|
||||
this.logger.info('/openid - :name');
|
||||
this.logger.info('GET /identity-providers/:id');
|
||||
|
||||
const redirectUrl = await this.identityProviderService.loginIdentityProvider(id);
|
||||
const redirectUrl =
|
||||
await this.identityProviderService.loginIdentityProvider(id);
|
||||
return {
|
||||
url: redirectUrl,
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import { Issuer, generators } from 'openid-client';
|
||||
import { SsoSignInDto } from './dto/sso-signin.dto';
|
||||
import { CacheService } from 'src/services/cache.service';
|
||||
import { Request } from 'express';
|
||||
import { CreateIdentityProvider } from './dto/identity-provider.dto';
|
||||
|
||||
@Injectable()
|
||||
export class IdentityProviderService implements OnModuleInit {
|
||||
@@ -137,4 +138,19 @@ export class IdentityProviderService implements OnModuleInit {
|
||||
);
|
||||
}
|
||||
|
||||
async deleteIdentityProvider(id: string, metadata: Metadata) {
|
||||
return await lastValueFrom(
|
||||
this.identityProviderService.DeleteIdentityProvider({ id }, metadata),
|
||||
);
|
||||
}
|
||||
|
||||
async updateIdentityProviders(id: string, body: CreateIdentityProvider, metadata: Metadata) {
|
||||
return await lastValueFrom(
|
||||
this.identityProviderService.UpdateIdentityProvider({
|
||||
id,
|
||||
...body,
|
||||
}, metadata),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user