UNPKG

@teamsight/flight

Version:

Lambda life cycles

82 lines 3.78 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const inversify_1 = require("inversify"); const uuid = require("uuid"); const authorizer_handler_1 = require("./authorizer-handler"); let Authorizer = class Authorizer extends authorizer_handler_1.AuthorizerHandler { constructor(jwtHelper) { super(); this.jwtHelper = jwtHelper; } run(event, context) { return __awaiter(this, void 0, void 0, function* () { try { console.log("methodArn", event.methodArn); const token = event.headers.Authorization.split("Bearer ")[1]; console.log("event", event); console.log("token", token); const decoded = yield this.jwtHelper.process(token, this.audience); console.log("decoded", decoded); const customContext = yield this.createAuthorizerContext(decoded); yield this.doAuthorization(event, decoded, customContext); console.log("allow"); console.log("customContext", customContext); return this.createResult("Allow", event.methodArn, customContext, decoded.sub); } catch (err) { console.log("deny"); return this.createResult("Deny", event.methodArn); } }); } createResult(effect, arn, customContext, principalId) { principalId = principalId || uuid.v4().toString(); customContext = customContext || { sub: null }; const policyDocument = this.buildPolicy(effect, arn); const result = { principalId, policyDocument, context: Object.keys(customContext).reduce((x, key) => { x[key] = JSON.stringify(customContext[key]); return x; }, {}) }; return result; } buildPolicy(effect, resource) { const doc = { Version: "2012-10-17", Statement: [ { Action: "execute-api:Invoke", Effect: effect, Resource: resource } ] }; return doc; } }; Authorizer = __decorate([ inversify_1.injectable(), __metadata("design:paramtypes", [Object]) ], Authorizer); exports.Authorizer = Authorizer; //# sourceMappingURL=authorizer.js.map