2
0

adminRequired.js 740 B

123456789101112131415161718192021
  1. const cache = require('../../cache');
  2. const db = require('../../db');
  3. module.exports = function(next) {
  4. return function(session) {
  5. let args = [];
  6. for (let prop in arguments) {
  7. args.push(arguments[prop]);
  8. }
  9. let cb = args[args.length - 1];
  10. cache.hget('sessions', session.sessionId, (err, session) => {
  11. if (err || !session || !session.userId) return cb({ status: 'failure', message: 'Login required.' });
  12. db.models.user.findOne({_id: session.userId}, (err, user) => {
  13. if (err || !user) return cb({ status: 'failure', message: 'Login required.' });
  14. if (user.role !== 'admin') return cb({ status: 'failure', message: 'Admin required.' });
  15. args.push(session.userId);
  16. next.apply(null, args);
  17. });
  18. });
  19. }
  20. };