var connection = require("./connection"); var async = require("async"); var dbRights = this; exports.getRights = function(userId,callback){ connection.query("SELECT * FROM UserRights t1 INNER JOIN UserRightsCodes t2 ON t1.RightId = t2.RightId WHERE t1.UserId = ?;",[userId],function(error,rows,fields){ if (error){ callback(error); return; } var rights = []; for(var i = 0; i < rows.length; i++){ if (!rights.indexOf(rows[i].Name) > -1){ rights.push(rows[i].Name); } } console.log("rights"); console.log(rights); callback(null,rights); }); } exports.addRight = function(userId, rightIdOrRightName, callback){ connection.query("INSERT IGNORE INTO UserRights (UserId,RightId) VALUES(?,?);",[userId,rightIdOrRightName],function(error,result){ if (error){ callback(error); return; } callback(null,result); }); } exports.addRights = function(userId, rightIdArray, topCallback){ async.each(rightIdArray,function(item, callback){ dbRights.addRight(userId,item,function(error,result){ if (error){ callback(error); } else { callback(); } }); },function(error){ if (error){ topCallback(error); } else { topCallback(); } }); } exports.hasRight = function(userId, rightName, callback){ dbRights.getRights(userId,function(error,rights){ if (error){ callback(error); } else { if (rights.indexOf(rightName) > -1){ callback(null,true); } else { callback(null,false); } } }); }