diff --git a/docsfera.json b/docsfera.json index cbd0471..13659cb 100644 --- a/docsfera.json +++ b/docsfera.json @@ -20,6 +20,14 @@ ], "type": "string" } + }, + { + "name": "host", + "required": true, + "in": "header", + "schema": { + "type": "string" + } } ], "requestBody": { @@ -64,6 +72,14 @@ ], "type": "string" } + }, + { + "name": "host", + "required": true, + "in": "header", + "schema": { + "type": "string" + } } ], "requestBody": { @@ -5715,6 +5731,96 @@ "Health" ] } + }, + "/network-policy": { + "get": { + "operationId": "NetworkPolicyController_getNetworks", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkPoliciesDTO" + } + } + } + } + }, + "security": [ + { + "access-token": [] + }, + { + "access-token": [] + } + ] + }, + "post": { + "operationId": "NetworkPolicyController_applyNetworkPolicies", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkPoliciesDTO" + } + } + } + }, + "responses": { + "200": { + "description": "" + }, + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + }, + "security": [ + { + "access-token": [] + }, + { + "access-token": [] + } + ] + }, + "delete": { + "operationId": "NetworkPolicyController_removeNetworkPolicies", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NetworkPoliciesDTO" + } + } + } + }, + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "access-token": [] + }, + { + "access-token": [] + } + ] + } } }, "info": { @@ -8566,6 +8672,20 @@ "required": [ "theme" ] + }, + "NetworkPoliciesDTO": { + "type": "object", + "properties": { + "policies": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "policies" + ] } } } diff --git a/package-lock.json b/package-lock.json index 20c2fcd..3776d14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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.37.0-alpha.19", + "@dadosfera/protospack-v2": "3.37.0-alpha.20", "@grpc/grpc-js": "^1.9.3", "@grpc/proto-loader": "^0.7.9", "@nestjs/cli": "^9.5.0", @@ -1397,9 +1397,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.37.0-alpha.19", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.37.0-alpha.19.tgz", - "integrity": "sha512-+F2sMJszfXRqWuN5ae+v7MqHhJyg7TgVvnuFBKUOwHvBoWCfAUnIm9XGEA/YjPpRUa1gM0nnKL8SpBFf43Q1aA==", + "version": "3.37.0-alpha.20", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.37.0-alpha.20.tgz", + "integrity": "sha512-rs8YUgnwA8dTohzSEAeilU7WAscodf26/yrsqC/lq0Dz2s3Hi09TXItnLJ5ktv5xWaBQ/eZjyc5zPjpcWL3myQ==", "license": "ISC", "dependencies": { "@grpc/grpc-js": "^1.9.3", diff --git a/package.json b/package.json index 91ed2f0..d2c3b74 100644 --- a/package.json +++ b/package.json @@ -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.37.0-alpha.19", + "@dadosfera/protospack-v2": "3.37.0-alpha.20", "@grpc/grpc-js": "^1.9.3", "@grpc/proto-loader": "^0.7.9", "@nestjs/cli": "^9.5.0", diff --git a/src/modules/network-policy/network-policy.controller.ts b/src/modules/network-policy/network-policy.controller.ts index 25f3074..8ae8371 100644 --- a/src/modules/network-policy/network-policy.controller.ts +++ b/src/modules/network-policy/network-policy.controller.ts @@ -1,4 +1,4 @@ -import { Body, Controller, Delete, HttpCode, HttpStatus, Post } from '@nestjs/common'; +import { Body, Controller, Delete, Get, HttpCode, HttpStatus, Post } from '@nestjs/common'; import { ApiOkResponse } from '@nestjs/swagger'; import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum'; import { @@ -14,11 +14,23 @@ import { PackTheMetadata } from 'src/utils/ PackTheMetadata'; export class NetworkPolicyController { constructor(private networkPolicyService: NetworkPolicyService) {} + @Get() + @Authenticated() + @RequireAllPermissions(PERMISSIONS_GROUPS.USERS.permissions.ADMIN) + @HttpCode(HttpStatus.OK) + async getNetworks( + @User() user: RequestUser, + ) { + return await this.networkPolicyService.getByCustomer( + user.customer_id + ); + } + @Post() @Authenticated() @RequireAllPermissions(PERMISSIONS_GROUPS.USERS.permissions.ADMIN) @ApiOkResponse() - @HttpCode(HttpStatus.OK) + @HttpCode(HttpStatus.CREATED) async applyNetworkPolicies( @User() user: RequestUser, @Body() data: NetworkPoliciesDTO, diff --git a/src/modules/network-policy/network-policy.service.ts b/src/modules/network-policy/network-policy.service.ts index a411c77..ed39915 100644 --- a/src/modules/network-policy/network-policy.service.ts +++ b/src/modules/network-policy/network-policy.service.ts @@ -6,6 +6,8 @@ import { CustomersProtoService } from '@dadosfera/protospack-v2/dist/lib/Duc/int import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Duc'; import { Metadata } from '@grpc/grpc-js'; import { lastValueFrom } from 'rxjs'; +import { NetworkPoliciesDTO } from './dto/network-policy.dto'; + @Injectable() export class NetworkPolicyService { @@ -26,6 +28,18 @@ export class NetworkPolicyService { ); } + async getByCustomer(id: string): Promise { + const { + customer + } = await lastValueFrom(this.customerService.CustomerFindOneById({ + id + })); + + return { + policies: customer.networkPolicies + } + } + async apply( networkPolicies: string[], customerId: string,