UNPKG

@nsilly/auth

Version:

JSON Web Token Authentication for nSilly framework

143 lines (111 loc) 3.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.Authenticate = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _lodash = _interopRequireDefault(require("lodash")); var _exceptions = require("@nsilly/exceptions"); var _expressHttpContext = _interopRequireDefault(require("express-http-context")); var Authenticate = /*#__PURE__*/ function () { function Authenticate() { this.isAuthenticated = false; } var _proto = Authenticate.prototype; _proto.login = /*#__PURE__*/ function () { var _login = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee(data) { return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: this.decoded = data; this.isAuthenticated = true; _expressHttpContext.default.set('isAuthenticated', true); case 3: case "end": return _context.stop(); } } }, _callee, this); })); function login(_x) { return _login.apply(this, arguments); } return login; }(); _proto.setModel = function setModel(model) { this.model = model; }; /** * Get current logged in user * * @return object */ _proto.getUser = /*#__PURE__*/ function () { var _getUser = (0, _asyncToGenerator2.default)( /*#__PURE__*/ _regenerator.default.mark(function _callee2() { var user; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: if (!_lodash.default.isUndefined(this.model)) { _context2.next = 2; break; } throw new _exceptions.Exception('Method is not implemented'); case 2: if (this.isAuthenticated) { _context2.next = 4; break; } throw new _exceptions.UnauthorizedHttpException('Unauthorized'); case 4: if (!_lodash.default.isNil(_expressHttpContext.default.get('user'))) { _context2.next = 9; break; } _context2.next = 7; return this.model.user.findOne({ where: { id: this.decoded.id }, include: [{ model: this.model.role }] }); case 7: user = _context2.sent; _expressHttpContext.default.set('user', user); case 9: return _context2.abrupt("return", _expressHttpContext.default.get('user')); case 10: case "end": return _context2.stop(); } } }, _callee2, this); })); function getUser() { return _getUser.apply(this, arguments); } return getUser; }(); _proto.getUserId = function getUserId() { if (!this.isAuthenticated) { throw new _exceptions.UnauthorizedHttpException('Unauthorized'); } return this.decoded.id; }; return Authenticate; }(); exports.Authenticate = Authenticate;