From 3ed26e648fd9d8428cd2c2ff2d9469bd9feb67d0 Mon Sep 17 00:00:00 2001 From: Marcos Rodrigues Date: Tue, 25 Nov 2025 10:48:06 -0300 Subject: [PATCH 1/4] FIX: ci --- .github/workflows/k8s-deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/k8s-deploy.yml b/.github/workflows/k8s-deploy.yml index d3d469d..5ecee62 100644 --- a/.github/workflows/k8s-deploy.yml +++ b/.github/workflows/k8s-deploy.yml @@ -56,9 +56,9 @@ jobs: - name: Install Helmfile run: | - wget https://github.com/helmfile/helmfile/releases/download/v0.148.0/helmfile_0.148.0_linux_amd64.tar.gz + curl -fsSLO https://github.com/helmfile/helmfile/releases/download/v0.148.0/helmfile_0.148.0_linux_amd64.tar.gz tar -xzf helmfile_0.148.0_linux_amd64.tar.gz - mv helmfile /usr/local/bin/ + sudo mv helmfile /usr/local/bin/ helmfile --version - name: Install Helm Diff Plugin From 5e909506602dac6f5b78ee74300a470b20dee902 Mon Sep 17 00:00:00 2001 From: Marcos Rodrigues Date: Tue, 25 Nov 2025 10:59:06 -0300 Subject: [PATCH 2/4] FIX: restore whitelist annotation --- deploy/helm-chart/templates/ingress-private.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/helm-chart/templates/ingress-private.yaml b/deploy/helm-chart/templates/ingress-private.yaml index 8b73b4b..a5be256 100644 --- a/deploy/helm-chart/templates/ingress-private.yaml +++ b/deploy/helm-chart/templates/ingress-private.yaml @@ -2,6 +2,7 @@ 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/proxy-read-timeout: "300" nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" From 576fdecf89f6596a6d2691ade22cff6f645142db Mon Sep 17 00:00:00 2001 From: Marcos Rodrigues Date: Tue, 25 Nov 2025 11:27:04 -0300 Subject: [PATCH 3/4] FIX: ci to oracle github worker --- .github/workflows/k8s-deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/k8s-deploy.yml b/.github/workflows/k8s-deploy.yml index 5ecee62..ac09af8 100644 --- a/.github/workflows/k8s-deploy.yml +++ b/.github/workflows/k8s-deploy.yml @@ -105,7 +105,7 @@ jobs: - name: Install Helmfile run: | - wget https://github.com/helmfile/helmfile/releases/download/v0.148.0/helmfile_0.148.0_linux_amd64.tar.gz + curl -fsSLO https://github.com/helmfile/helmfile/releases/download/v0.148.0/helmfile_0.148.0_linux_amd64.tar.gz tar -xzf helmfile_0.148.0_linux_amd64.tar.gz sudo mv helmfile /usr/local/bin/ helmfile --version From 6d9ecc356883eec982e0a16687e0285dbfd5a903 Mon Sep 17 00:00:00 2001 From: Marcos Rodrigues Date: Thu, 27 Nov 2025 09:43:43 -0300 Subject: [PATCH 4/4] FIX: mixpanel events --- src/authentication/extract-user.ts | 20 +++++++++++++ src/modules/mixpanel/mixpanel.controller.ts | 33 ++++++++++++++++----- 2 files changed, 45 insertions(+), 8 deletions(-) create mode 100644 src/authentication/extract-user.ts diff --git a/src/authentication/extract-user.ts b/src/authentication/extract-user.ts new file mode 100644 index 0000000..96a3602 --- /dev/null +++ b/src/authentication/extract-user.ts @@ -0,0 +1,20 @@ +import jwt, { JwtPayload } from 'jsonwebtoken'; + +export function extractUserFrom(aRawJwt: string) { + const decodedToken = jwt.decode(aRawJwt, { + complete: true, + }); + + const payload = decodedToken.payload as JwtPayload; + + return { + user_id: payload.user_id, + username: payload.username, + permissions: payload.permissions, + customer_id: payload.customer_id, + customer_name: payload.customer_name, + customer_tier: payload.customer_tier, + customer_modules: payload.customer_modules, + access_token: aRawJwt, + } +} diff --git a/src/modules/mixpanel/mixpanel.controller.ts b/src/modules/mixpanel/mixpanel.controller.ts index 477569b..2b2d314 100644 --- a/src/modules/mixpanel/mixpanel.controller.ts +++ b/src/modules/mixpanel/mixpanel.controller.ts @@ -1,29 +1,46 @@ import { Body, Controller, Inject, Param, Post, Req } from '@nestjs/common'; -import { init } from 'mixpanel'; -import { Authenticated } from 'src/decorators/authentication.decorator'; import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator'; -import { RequestUser, User } from 'src/decorators/user.decorator'; +import { RequestUser } from 'src/decorators/user.decorator'; import { MixpanelService } from './mixpanel.service'; +import { extractUserFrom } from 'src/authentication/extract-user'; +import DadosferaLogger from '@dadosfera/dadosfera-logs'; @ApiInternalOnlyController() @Controller('trackEvent') export class MixpanelController { + logger: DadosferaLogger; + constructor( - private mixpanelService: MixpanelService - ) {} + @Inject(DadosferaLogger) + dadosferaLogger: DadosferaLogger, + private mixpanelService: MixpanelService, + ) { + this.logger = dadosferaLogger.logger; + } + @Post(':id') async trackEvent( @Param('id') id, @Body() body, - @User() user: RequestUser, @Req() request ) { + this.logger.info(`POST Track Event: ${id}`) delete body.info; + + const anonymousUser = { + username: "anonymous", + customer_name: "anonymous" + } as RequestUser + + const hasToken = request.headers['authorization']; + + const user = hasToken ? extractUserFrom(hasToken) : anonymousUser; + + this.logger.info(`Has user: ${typeof hasToken == "string"}`) await this.mixpanelService.track(id, user, request, body) + this.logger.info(`Event successful`) return { id, body, user: user.username }; } - - }