@cloudar/jwt-rpc-auth-guard
Version:
JWT guard para autenticación RPC en NestJS
35 lines (34 loc) • 1.5 kB
JavaScript
;
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;