UNPKG

userauthjs

Version:

Node module for management of user/group privileges and sessions

143 lines (136 loc) 5.35 kB
var Privilege = require('./models/privilege') var User = require('./models/user') var Usergroup = require('./models/usergroup') /** * Adds privilege to database. */ exports.add = function(title, next) { Privilege.findOne({title: title}, function(err, privilege) { if (err) { return next(err) } if (privilege) { return next(null, false) } privilege = new Privilege({title: title}) privilege.save(function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('Privilege added: '+ privilege.title) } next(null, privilege) }) }) } exports.remove = function(title, next) { Privilege.findOneAndRemove({ title: title }, function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('Privilege removed: '+ privilege.title) } next(null, privilege) }) } exports.modify = function(title, newTitle, description, next) { Privilege.findOne({ title: title }, function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } var oldDescription = privilege.description if (newTitle && newTitle !== title) { privilege.title = newTitle } if (description && oldDescription !== description) { privilege.description = description } privilege.save(function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (newTitle && newTitle !== title) { if (process.env.USERAUTH_LOG) { console.log('Privilege \''+ title + '\' renamed to \''+newTitle+'\'') } } if (description && oldDescription !== description) { if (process.env.USERAUTH_LOG) { console.log('Description of privilege \'' + privilege.title + '\' modified') } } return next(null, privilege) }) }) } exports.addUser = function(userid, privilege, next) { User.findOne({ _id: userid }, function(err, user) { if (err) { return next(err) } if (!user) { return next(null, false) } Privilege.findOne({ title: privilege }, function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (privilege.users.indexOf(user._id) > -1) { return next(null, false) } privilege.users.push(user._id) privilege.save(function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('User \''+ user.username + '\' added to privilege \'' + privilege.title + '\'') } next(null, privilege) }) }) }) } exports.removeUser = function(userid, privilege, next) { User.findOne({ _id: userid }, function(err, user) { if (err) { return next(err) } if (!user) { return next(null, false) } Privilege.findOne({ title: privilege }, function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } indexUser = privilege.users.indexOf(user._id) if (indexUser < 0) { return next(null, false) } privilege.users.splice(indexUser, 1) privilege.save(function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('User \'' + user.username + '\' removed from privilege \'' + privilege.title + '\'') } next(null, privilege) }) }) }) } exports.addUsergroup = function(groupname, privilegetitle, next) { Usergroup.findOne({ groupname: groupname }) .exec(function(err, usergroup) { if (err) { return next(err) } if (!usergroup) { return next(null, false) } Privilege.findOne({ title: privilegetitle }, function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (privilege.usergroups.indexOf(usergroup._id) > -1) { return next(null, false) } privilege.usergroups.push(usergroup._id) privilege.save(function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('Usergroup \'' + usergroup.groupname + '\' added to privilege \'' + privilege.title + '\'') } next(null, privilege) }) }) }) } exports.removeUsergroup = function(groupname, privilegetitle, next) { Usergroup.findOne({ groupname: groupname }, function(err, usergroup) { if (err) { return next(err) } if (!usergroup) { return next(null, false) } Privilege.findOne({ title: privilegetitle }, function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } indexGroup = privilege.usergroups.indexOf(usergroup._id) if (indexGroup < 0 ) { return next(null, false) } privilege.usergroups.splice(indexGroup, 1) privilege.save(function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } if (process.env.USERAUTH_LOG) { console.log('Usergroup \'' + usergroup.groupname + '\' removed from privilege \'' + privilege.title + '\'') } next(null, privilege) }) }) }) } exports.getPrivilegeByTitle = function(title, next) { Privilege.findOne({ title: title }) .populate('users') .populate('usergroups') .exec(function(err, privilege) { if (err) { return next(err) } if (!privilege) { return next(null, false) } next(null, privilege) }) }