UNPKG

@cloudar/jwt-rpc-auth-guard

Version:

JWT guard para autenticación RPC en NestJS

35 lines (34 loc) • 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.JwtRpcAuthGuard = void 0; const jsonwebtoken_1 = require("jsonwebtoken"); const microservices_1 = require("@nestjs/microservices"); class JwtRpcAuthGuard { canActivate(context) { var _a, _b; const ctx = context.switchToRpc(); const data = ctx.getData(); const token = (_b = (_a = data === null || data === void 0 ? void 0 : data.headers) === null || _a === void 0 ? void 0 : _a.authorization) === null || _b === void 0 ? void 0 : _b.replace('Bearer ', ''); if (!token) { throw new microservices_1.RpcException({ statusCode: 401, message: 'No token provided', }); } try { const payload = (0, jsonwebtoken_1.verify)(token, process.env.JWT_SECRET); // <-- directamente data.user = payload; return true; } catch (e) { if (e instanceof jsonwebtoken_1.TokenExpiredError) { throw new microservices_1.RpcException({ statusCode: 401, message: 'Token expirado' }); } if (e instanceof jsonwebtoken_1.JsonWebTokenError) { throw new microservices_1.RpcException({ statusCode: 401, message: 'Invalid signature' }); } throw new microservices_1.RpcException({ statusCode: 500, message: 'Internal server error' }); } } } exports.JwtRpcAuthGuard = JwtRpcAuthGuard;