fix: Add admin role fields to JWT strategy for AdminGuard authorization
Some checks failed
ParentFlow CI/CD Pipeline / Backend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Frontend Tests (push) Has been cancelled
ParentFlow CI/CD Pipeline / Security Scanning (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-app/maternal-app-backend dockerfile:Dockerfile.production name:backend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Build Docker Images (map[context:maternal-web dockerfile:Dockerfile.production name:frontend]) (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Development (push) Has been cancelled
ParentFlow CI/CD Pipeline / Deploy to Production (push) Has been cancelled
CI/CD Pipeline / Lint and Test (push) Has been cancelled
CI/CD Pipeline / E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Application (push) Has been cancelled

The AdminGuard was rejecting requests with 403 Forbidden because the JWT
strategy was only returning userId, email, and deviceId but not the admin
authorization fields (isAdmin, globalRole, adminPermissions).

Updated jwt.strategy.ts to include:
- isAdmin: boolean flag for admin access
- globalRole: user's global role (parent/guest/admin)
- adminPermissions: array of specific admin permissions
- id: added for compatibility alongside userId

This allows the AdminGuard to properly verify admin privileges when
accessing /api/v1/admin/* endpoints.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Andrei
2025-10-07 15:58:29 +00:00
parent 3c934c300a
commit ab23e978a2

View File

@@ -32,8 +32,12 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
return { return {
userId: payload.sub, userId: payload.sub,
id: payload.sub, // Add id for compatibility
email: payload.email, email: payload.email,
deviceId: payload.deviceId, deviceId: payload.deviceId,
isAdmin: user.isAdmin,
globalRole: user.globalRole,
adminPermissions: user.adminPermissions,
}; };
} }
} }