@mbc-cqrs-serverless/core
Version:
CQRS and event base core
74 lines • 2.61 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.extractInvokeContext = extractInvokeContext;
exports.getAuthorizerClaims = getAuthorizerClaims;
const serverless_express_1 = require("@codegenie/serverless-express");
const jwt_decode_1 = require("jwt-decode");
const helpers_1 = require("../helpers");
function extractInvokeContext(ctx) {
if (helpers_1.IS_LAMBDA_RUNNING) {
return (0, serverless_express_1.getCurrentInvoke)();
}
if (!ctx) {
return {};
}
const request = ctx.switchToHttp().getRequest();
const headers = request.headers;
let authorizer = undefined;
const authToken = request.get('authorization');
if (authToken) {
const claims = (0, jwt_decode_1.jwtDecode)(authToken);
authorizer = {
jwt: {
claims,
scopes: claims?.scope?.split(','),
},
};
}
return {
event: {
routeKey: `${request.method} ${request.path}`,
rawPath: request.originalUrl,
headers,
requestContext: {
domainName: request.hostname,
http: {
method: request.method,
path: request.path,
protocol: request.protocol,
sourceIp: request.get('x-source-ip') || request.ip,
userAgent: request.get('user-agent'),
},
requestId: request.get('x-request-id'),
authorizer,
},
},
context: {
awsRequestId: request.get('x-amz-cf-id') ||
request.get('x-amzn-trace-id') ||
request.get('x-request-id'),
},
};
}
function getAuthorizerClaims(ctx) {
return (ctx?.event?.requestContext?.authorizer?.jwt?.claims || {});
// {
// "sub": "92ca4f68-9ac6-4080-9ae2-2f02a86206a4",
// "iss": "http://localhost:9229/local_2G7noHgW",
// "cognito:groups": ["admins"],
// "cognito:username": "admin2",
// "origin_jti": "af065044-5ddd-46f9-b0bb-94941ad80a11",
// "aud": "dnk8y7ii3wled35p3lw0l2cd7",
// "event_id": "4dbf2af0-6bfc-4500-a3b1-2a07293accb4",
// "token_use": "id",
// "auth_time": 1699930911,
// "name": "admin2",
// "custom:tenant": "1801",
// "custom:roles": "[{\"role\":\"system_admin\"}]",
// "exp": 1700017311,
// "email": "admin@test.com",
// "iat": 1699930911,
// "jti": "ed9c5048-a6ea-4c67-ba60-4d9c3bcbafaa"
// }
}
//# sourceMappingURL=invoke.js.map