@nsilly/auth
Version:
JSON Web Token Authentication for nSilly framework
143 lines (111 loc) • 3.53 kB
JavaScript
;
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;