UNPKG

horse-generator

Version:
1 lines 2.39 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.snsPassport=exports.hasRole=exports.isAuthenticated=exports.setTokenCookie=exports.signToken=void 0;var _jsonwebtoken=require("jsonwebtoken"),_jsonwebtoken2=_interopRequireDefault(_jsonwebtoken),_expressJwt=require("express-jwt"),_expressJwt2=_interopRequireDefault(_expressJwt),_composableMiddleware=require("composable-middleware"),_composableMiddleware2=_interopRequireDefault(_composableMiddleware),_model=require("../app/model"),_env=require("../config/env"),_env2=_interopRequireDefault(_env);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function signToken(e,s){return _jsonwebtoken2.default.sign({_id:e,role:s},_env2.default.session.secret,{expiresIn:_env2.default.session.cookie.maxAge/1e3})}function setTokenCookie(e,s){if(!e.user)return s.status(404).send("It looks like you aren't logged in, please try again.");var r=signToken(e.user._id,e.user.role);s.cookie("token",r),s.redirect("/")}function authToken(e){return(0,_composableMiddleware2.default)().use(function(e,s,r){e.query&&e.query.hasOwnProperty("access_token")&&(e.headers.authorization="Bearer "+e.query.access_token),e.query&&void 0===e.headers.authorization&&(e.headers.authorization="Bearer "+e.cookies.token),r()}).use((0,_expressJwt2.default)({secret:_env2.default.session.secret,credentialsRequired:e}))}function isAuthenticated(){return(0,_composableMiddleware2.default)().use(authToken(!0)).use(function(e,s,r,t){if("UnauthorizedError"===e.name)return r.status(401).send();t()}).use(function(e,s,r){_model.User.findById(e.user._id).exec().then(function(t){if(!t)return s.status(401).end();e.user=t,r()}).catch(function(e){return r(e)})})}function hasRole(e){if(!e)throw new Error("Required role needs to be set");return(0,_composableMiddleware2.default)().use(isAuthenticated()).use(function(s,r,t){return _env2.default.userRoles.indexOf(s.user.role)>=_env2.default.userRoles.indexOf(e)?t():r.status(403).send("Forbidden")})}function snsPassport(){return(0,_composableMiddleware2.default)().use(authToken(!1)).use(function(e,s,r){e.session.passport={redirectUrl:e.query.redirectUrl||"/"},e.user&&(e.session.passport.userId=e.user._id),r()})}exports.signToken=signToken,exports.setTokenCookie=setTokenCookie,exports.isAuthenticated=isAuthenticated,exports.hasRole=hasRole,exports.snsPassport=snsPassport;