diff --git a/docsfera.json b/docsfera.json index fcafe66..212ad4e 100644 --- a/docsfera.json +++ b/docsfera.json @@ -5489,6 +5489,14 @@ "schema": { "type": "string" } + }, + { + "name": "origin", + "required": true, + "in": "header", + "schema": { + "type": "string" + } } ], "responses": { @@ -5643,6 +5651,9 @@ "name": { "type": "string" }, + "displayName": { + "type": "string" + }, "tier": { "type": "string" }, @@ -5663,6 +5674,7 @@ "modules", "id", "name", + "displayName", "tier", "scheduleLimit", "links", diff --git a/maestro/templates/ingress-private.yaml b/maestro/templates/ingress-private.yaml new file mode 100644 index 0000000..97708bc --- /dev/null +++ b/maestro/templates/ingress-private.yaml @@ -0,0 +1,28 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + annotations: + nginx.ingress.kubernetes.io/whitelist-source-range: "69.49.241.121/32" # hostgator ip + nginx.ingress.kubernetes.io/proxy-body-size: "0" + nginx.ingress.kubernetes.io/server-snippet: | + underscores_in_headers on; + ignore_invalid_headers on; + + generation: 1 + labels: + app: maestro + name: open-data + namespace: applications +spec: + ingressClassName: nginx + rules: + - host: {{ .Values.hostname }} + http: + paths: + - backend: + service: + name: maestro + port: + number: {{ .Values.ingress.port }} + path: /open-data/sharing-ocean-data + pathType: Prefix diff --git a/package-lock.json b/package-lock.json index 5c133d6..31af08d 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-beta.7", + "@dadosfera/protospack-v2": "^3.37.0-beta.10 ", "@grpc/grpc-js": "^1.9.3", "@grpc/proto-loader": "^0.7.9", "@nestjs/cli": "^9.5.0", @@ -1298,9 +1298,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.37.0-beta.7", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.37.0-beta.7.tgz", - "integrity": "sha512-XGaDw6mICM1/qI0ZfQZaWpRHmAaOi3ufIUmrpfsTiW40oeWGW+DLLAsmbACgt34j4cpJ5Yt0AURsXagtmUgBmw==", + "version": "3.37.0-beta.10", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.37.0-beta.10.tgz", + "integrity": "sha512-nKSu9VpOPFSTeX0yN4aEY0HjvGxgbLPYXl217NHgLm+a/+i01USDaxjwIOqP5hhDvhnMNaiCq5awiQTYbhF/7A==", "license": "ISC", "dependencies": { "@grpc/grpc-js": "^1.9.3", diff --git a/package.json b/package.json index 6d6edf0..5a9463a 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-beta.7", + "@dadosfera/protospack-v2": "^3.37.0-beta.10 ", "@grpc/grpc-js": "^1.9.3", "@grpc/proto-loader": "^0.7.9", "@nestjs/cli": "^9.5.0", diff --git a/src/modules/auth/dtos/login.ts b/src/modules/auth/dtos/login.ts index 6e87606..a21e6cc 100644 --- a/src/modules/auth/dtos/login.ts +++ b/src/modules/auth/dtos/login.ts @@ -72,6 +72,8 @@ export class AuthCustomer { @ApiProperty() name: string; @ApiProperty() + displayName: string; + @ApiProperty() tier: string; @ApiProperty() scheduleLimit: string; diff --git a/src/modules/open-data/open-data.controller.ts b/src/modules/open-data/open-data.controller.ts index 65172e0..b8951ed 100644 --- a/src/modules/open-data/open-data.controller.ts +++ b/src/modules/open-data/open-data.controller.ts @@ -1,5 +1,5 @@ import DadosferaLogger from '@dadosfera/dadosfera-logs'; -import { Body, Controller, ForbiddenException, Header, HttpCode, Inject, Param, Post, Query, Req, UseFilters, UseGuards, UseInterceptors } from '@nestjs/common'; +import { Body, Controller, ForbiddenException, Header, Headers, HttpCode, HttpException, Inject, Param, Post, Query, Req, Res, UseFilters, UseGuards, UseInterceptors } from '@nestjs/common'; import { ApiCreatedResponse, ApiHeaders, ApiOkResponse, ApiTags } from '@nestjs/swagger'; import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator'; import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; @@ -40,17 +40,23 @@ export class OpenDataController { language: string, @Req() request: Request, + @Headers('origin') + origin: string ) { - this.logger.info('createUser for open data'); + this.logger.info('createUser for open data' + JSON.stringify(request.headers)); - this.logger.info('user-agent', request.headers['user-agent']); + const corslist = ["https://devsbm.dadosfera.io", "https://sharingoceandata.com"]; + if (!corslist.includes(origin)) { + this.logger.info('block request by cors list: '+ origin); + throw new ForbiddenException(); + } const OPENDATA_CUSTOMER_ID = process.env.OPEN_CUSTOMER_ID; const OPENDATA_GROUP_ID = process.env.OPEN_GROUP_ID; const roles = [process.env.OPEN_GROUP_ID]; const metadata = PackTheMetadata({ language: language || 'en-us' - }); + }); const data = {}