From fa512dd2ebf2d24d37b41a745f8016a319e22245 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 4 Mar 2026 23:52:53 -0800 Subject: [PATCH] fix(auth): JwtStrategy.validate() return id not sub All 6 service strategies were returning { sub } but controllers use req.user.id. Change return value from { sub: payload.sub } to { id: payload.sub } so that req.user.id resolves correctly in all protected controllers. Co-Authored-By: Claude Sonnet 4.6 --- .../src/infrastructure/strategies/jwt.strategy.ts | 2 +- .../src/infrastructure/strategies/jwt.strategy.ts | 2 +- .../src/infrastructure/strategies/jwt.strategy.ts | 2 +- .../src/infrastructure/strategies/jwt.strategy.ts | 2 +- .../src/infrastructure/strategies/jwt.strategy.ts | 2 +- .../user-service/src/infrastructure/strategies/jwt.strategy.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/backend/services/clearing-service/src/infrastructure/strategies/jwt.strategy.ts b/backend/services/clearing-service/src/infrastructure/strategies/jwt.strategy.ts index 9a06d2a..6bfdbca 100644 --- a/backend/services/clearing-service/src/infrastructure/strategies/jwt.strategy.ts +++ b/backend/services/clearing-service/src/infrastructure/strategies/jwt.strategy.ts @@ -13,6 +13,6 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { } async validate(payload: { sub: string; role: string; kycLevel: number; type: string }) { - return { sub: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; + return { id: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; } } diff --git a/backend/services/compliance-service/src/infrastructure/strategies/jwt.strategy.ts b/backend/services/compliance-service/src/infrastructure/strategies/jwt.strategy.ts index 9a06d2a..6bfdbca 100644 --- a/backend/services/compliance-service/src/infrastructure/strategies/jwt.strategy.ts +++ b/backend/services/compliance-service/src/infrastructure/strategies/jwt.strategy.ts @@ -13,6 +13,6 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { } async validate(payload: { sub: string; role: string; kycLevel: number; type: string }) { - return { sub: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; + return { id: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; } } diff --git a/backend/services/issuer-service/src/infrastructure/strategies/jwt.strategy.ts b/backend/services/issuer-service/src/infrastructure/strategies/jwt.strategy.ts index 9a06d2a..6bfdbca 100644 --- a/backend/services/issuer-service/src/infrastructure/strategies/jwt.strategy.ts +++ b/backend/services/issuer-service/src/infrastructure/strategies/jwt.strategy.ts @@ -13,6 +13,6 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { } async validate(payload: { sub: string; role: string; kycLevel: number; type: string }) { - return { sub: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; + return { id: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; } } diff --git a/backend/services/notification-service/src/infrastructure/strategies/jwt.strategy.ts b/backend/services/notification-service/src/infrastructure/strategies/jwt.strategy.ts index 9a06d2a..6bfdbca 100644 --- a/backend/services/notification-service/src/infrastructure/strategies/jwt.strategy.ts +++ b/backend/services/notification-service/src/infrastructure/strategies/jwt.strategy.ts @@ -13,6 +13,6 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { } async validate(payload: { sub: string; role: string; kycLevel: number; type: string }) { - return { sub: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; + return { id: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; } } diff --git a/backend/services/telemetry-service/src/infrastructure/strategies/jwt.strategy.ts b/backend/services/telemetry-service/src/infrastructure/strategies/jwt.strategy.ts index 9a06d2a..6bfdbca 100644 --- a/backend/services/telemetry-service/src/infrastructure/strategies/jwt.strategy.ts +++ b/backend/services/telemetry-service/src/infrastructure/strategies/jwt.strategy.ts @@ -13,6 +13,6 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { } async validate(payload: { sub: string; role: string; kycLevel: number; type: string }) { - return { sub: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; + return { id: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; } } diff --git a/backend/services/user-service/src/infrastructure/strategies/jwt.strategy.ts b/backend/services/user-service/src/infrastructure/strategies/jwt.strategy.ts index 9a06d2a..6bfdbca 100644 --- a/backend/services/user-service/src/infrastructure/strategies/jwt.strategy.ts +++ b/backend/services/user-service/src/infrastructure/strategies/jwt.strategy.ts @@ -13,6 +13,6 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') { } async validate(payload: { sub: string; role: string; kycLevel: number; type: string }) { - return { sub: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; + return { id: payload.sub, role: payload.role, kycLevel: payload.kycLevel }; } }