@restmatic/jwt-session
Version:
Provides Authentication to the RestMatic platform.
71 lines • 3.17 kB
JavaScript
;
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