@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
JavaScript
;
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