UNPKG

@seas-computing/nestjs-harvard-key

Version:

This repository provides a way to connect NestJS applications to HarvardKey and provide a rudimentary form of authorization (in the form of route guards) out of the box

54 lines 2.79 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 __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HarvardKeyStrategy = void 0; const passport_openidconnect_1 = require("passport-openidconnect"); const passport_1 = require("@nestjs/passport"); const common_1 = require("@nestjs/common"); const strategy_1 = require("./types/strategy"); const HarvardKey_module_definition_1 = require("./HarvardKey.module-definition"); const PASSPORT_CALLBACK_ARITY = 9; let HarvardKeyStrategy = class HarvardKeyStrategy extends (0, passport_1.PassportStrategy)(passport_openidconnect_1.Strategy, strategy_1.STRATEGY_NAME.OIDC, PASSPORT_CALLBACK_ARITY) { constructor(config) { if (!config.oidcCredentials) { throw new Error('Missing OIDC credentials in configuration'); } super({ ...config.oidcCredentials, issuer: config.oidcBaseURL, authorizationURL: `${config.oidcBaseURL}/oauth2/v1/authorize`, tokenURL: `${config.oidcBaseURL}/oauth2/v1/token`, userInfoURL: `${config.oidcBaseURL}/oauth2/v1/userinfo`, callbackURL: `${config.serverBaseURL}/validate`, scope: ['profile', 'email', 'groups'], }); this.issuer = config.oidcBaseURL; } validate(_, { _json: profile }) { var _a; return { netId: profile.preferred_username, email: profile.email, memberOf: (_a = profile.groups) !== null && _a !== void 0 ? _a : [], displayName: profile.name, }; } }; exports.HarvardKeyStrategy = HarvardKeyStrategy; exports.HarvardKeyStrategy = HarvardKeyStrategy = __decorate([ (0, common_1.Injectable)(), __param(0, (0, common_1.Inject)(HarvardKey_module_definition_1.MODULE_OPTIONS_TOKEN)), __metadata("design:paramtypes", [Object]) ], HarvardKeyStrategy); //# sourceMappingURL=HarvardKey.strategy.js.map