????
Current Path : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/controllers/ |
Current File : C:/inetpub/vhost/sdoc.gdtsolutions.vn/package/app/controllers/middleware.js |
const { menu } = require('../appconfig'); module.exports.permit = function (...tasks) { const isAllowed = function (userTasks) { var roles = userTasks.split(',').map(function (x) { return parseInt(x) }); return roles.some(role => tasks.length == 0 || tasks.indexOf(role) > -1); } return function (req, res, next) { if (!req.isAuthenticated || !req.isAuthenticated()) { req.session.redirectTo = req.originalUrl || req.baseUrl; res.redirect('/auth') } else { var user = req.user; res.locals.User = user; if (isAllowed(user['Tasks'])) next(); else { delete req.session.redirectTo; var err = new Error(`Bạn không được quyền truy cập đến đường dẫn ${req.originalUrl}`); err.status = 403; next(err); } } } } module.exports.useLayout = function (req, res, next) { let userMenu = []; if (req && req.user) { let tasks = req.user['Tasks'].split(',').map(function (x) { return parseInt(x) }); for (let i = 0; i < menu.length; i++) { const item = menu[i]; if (item['task'] && tasks.indexOf(item['task']) > -1) { userMenu.push(item); } else if (item.childs) { let userItem = {}; Object.assign(userItem, item); userItem.childs = item.childs.filter(x => !x.task || tasks.indexOf(x.task) > -1) if (userItem.childs.length) userMenu.push(userItem); } } } if (res.locals) { res.locals.path = req.baseUrl + req.path; res.locals.userMenu = userMenu; res.locals.csrfToken = req.csrfToken(); if (req && req.user) res.locals.User = req.user; } next(); } // Session var session = require('express-session'); const MSSQLStore = require('connect-mssql-v2'); exports.useSession = session({ secret: process.env.SESSION_SECRET || require('crypto').randomBytes(32).toString('hex'), name: '__sdoc.sid', resave: true, saveUninitialized: true, store: new MSSQLStore(require('../models/config'), { autoRemove: true, useUTC: true, }), cookie: { maxAge: 24 * 60 * 60 * 1000, } })