UNPKG

@restmatic/jwt-session

Version:

Provides Authentication to the RestMatic platform.

71 lines 3.17 kB
"use strict"; 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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /** * @file AuthMiddleware * @author Jim Bulkowski <jim.b@paperelectron.com> * @project Authentication * @license MIT {@link http://opensource.org/licenses/MIT} */ const plugin_tools_1 = require("@pomegranate/plugin-tools"); const cookie_parser_1 = __importDefault(require("cookie-parser")); exports.SessionMiddleware = plugin_tools_1.CreatePlugin('merge') .configuration({ name: 'SessionMiddleware', injectableParam: 'Middleware', injectableScope: 'namespace', depends: ['@restmatic/Core', '@restmatic/Strategies'], provides: ['@restmatic/Middleware'] }) .hooks({ load: (Injector, PluginLogger, Authentication, RouteSecurity, JWTuser) => __awaiter(this, void 0, void 0, function* () { PluginLogger.log('Creating Session Middleware.', 1); return { cookies: cookie_parser_1.default(), JWTSession: (req, res, next) => __awaiter(this, void 0, void 0, function* () { if (req.headers.authorization) { return Authentication.authenticate('bearer', { session: false }, function (err, user, info) { if (err) { err.defaultStatusCode = 401; return next(err); } if (!user) { return next(); } if (user && user.uuid) { return req.user = JWTuser(user, next); } return next(); })(req, res, next); } else if (req.cookies.jwt_token) { try { let user = yield RouteSecurity.decodeJwt(req.cookies.jwt_token); if (user && user.uuid) { return req.user = JWTuser(user, next); } throw new Error('Decoded token did not contain a user or user.uuid'); } catch (err) { PluginLogger.error(err.message); next(); } } else { return next(); } }) }; }) }); //# sourceMappingURL=SessionMiddleware.js.map