UIAngular/Server/src/database/user-rights.js

65 lines
1.8 KiB
JavaScript

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);
}
}
});
}