UNPKG

userauthjs

Version:

Node module for management of user/group privileges and sessions

95 lines (91 loc) 3.4 kB
var async = require('async') var bcrypt = require('bcrypt') var User = require('./models/user') var Usergroup = require('./models/usergroup') var Privilege = require('./models/privilege') /** * Adds privilege to specified usergroups. */ exports.add = function(groupname, next) { Usergroup.findOne({ groupname: groupname }, function(err, usergroup) { if (err) { return next(err) } if (usergroup) { return next(null, false) } usergroup = new Usergroup({ groupname: groupname}) usergroup.save(function(err, usergroup) { if (err) { return next(err) } if (process.env.USERAUTH_LOG) { console.log('Usergroup added: ' + usergroup.groupname) } next(null, usergroup) }) }) } exports.remove = function(groupname, next) { Usergroup.findOne({ groupname: groupname }, function(err, usergroup) { if (err) { return next(err) } if (!usergroup) { return next(null, false) } usergroup.remove(function(err, usergroup) { if (err) { return next(err) } if (!usergroup) { return next(null, false) } Privilege.find(function(err, privileges) { if (err) { return next(err) } if (!privileges) { return next(null, false) } var indexGroup async.each(privileges, function(privilege, done) { indexGroup = privilege.usergroups.indexOf(usergroup._id) if (indexGroup > -1) { privilege.usergroups.splice(indexGroup, 1) privilege.save(function(err, privilege) { if (err) { return done(err) } if (process.env.USERAUTH_LOG) { console.log('Usergroup \''+usergroup.groupname+'\' removed from privilege \''+privilege.title+'\'') } done() }) } else { done() } }, function(err) { if (err) { return next(err) } if (process.env.USERAUTH_LOG) { console.log('Usergroup removed: '+usergroup.groupname) } next(null, usergroup) }) }) }) }) } exports.addUser = function(username, groupname, next) { User.findOne({ username: username }, function(err, user) { if (err) { return next(err) } if (!user) { return next(null, false) } Usergroup.findOne({ groupname: groupname }, function(err, usergroup) { if (err) { return next(err) } if (!usergroup) { return next(null, false) } if (user.usergroups.indexOf(usergroup._id) > -1) { return next(null, false) } user.usergroups.push(usergroup._id) user.save(function(err, user) { if (err) { return next(err) } if (!user) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('User \'' + user.username + '\' to usergroup \''+usergroup.groupname + '\'') } next(null, user) }) }) }) } exports.removeUser = function(username, groupname, next) { User.findOne({ username: username }) .select('usergroups') .exec(function(err, user) { if (err) { return next(err) } if (!user) { return next(null, false) } Usergroup.findOne({ groupname: groupname }, function(err, usergroup) { if (err) { return next(err) } if (!usergroup) { return next(null, false) } indexGroup = user.usergroups.indexOf(usergroup._id) if (indexGroup < 0 ) { return next(null, false) } user.usergroups.splice(indexGroup, 1) user.save(function(err, user) { if (err) { return next(err) } if (!user) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('User \'' + user.username + '\' removed from usergroup \''+usergroup.groupname + '\'') } next(null, user) }) }) }) }