graph-acl
Version:
An ACL module using Graph databases.
211 lines (188 loc) • 5.67 kB
JavaScript
var async = require('async');
var neo4j = require('node-neo4j');
var acl = require("./index.js");
var db = new neo4j('http://localhost:7474');
var testACL = new acl(new acl.neo4jConnector(db));
// Test properties
var properties1 = {
p1: 'test prop 1',
p2: 'test prop 2'
};
var properties2 = {
p3: 'test prop 3',
p4: 'test prop 4'
};
// Test labels
var labels1 = [
'TestLabel1',
'TestLabel2'
];
var labels2 = [
'TestLabel3',
'TestLabel4'
];
// Test nodes and relationships
var testNode1;
var testNode2;
var testNode3;
var testNode4;
var testRelationship1;
var testRelationship2;
async.series([
function(callback){
testACL.allow('admin', 'dashboard', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.allow('admin', 'campaigns', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.allow('test', 'test', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.allow('test', 'campaigns', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.addUserRoles('test_user', 'admin', callback);
},
/*function(callback){
testACL.isAllowed('test_user', ['campaigns', 'dashboard'], ['read', 'delete'], function(err, isAllowed) {
console.log(isAllowed);
callback(err, isAllowed);
});
},
function(callback){
testACL.isAllowed('test_user', 'dashboard', 'read', function(err, isAllowed) {
console.log(isAllowed);
callback(err, isAllowed);
});
},*/
function(callback){
testACL.areAnyRolesAllowed(['test', 'admin'], 'dashboard', ['read', 'create'], function(err, isAllowed) {
console.log(isAllowed);
callback(err, isAllowed);
});
},
function(callback){
testACL.whatResources('test', function(err, resources) {
console.log(resources);
callback(err, resources);
});
}
]);
/*
async.series([
function(callback){
testACL.allow('admin', 'dashboard', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.allow('admin', 'campaigns', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.allow('admin', 'reports', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.allow('admin', 'users', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.allow('client', 'dashboard', ['read'], callback);
},
function(callback){
testACL.allow('client', 'reports', ['read'], callback);
},
function(callback){
testACL.allow('client', 'clientstuff', ['create', 'read', 'update', 'delete'], callback);
},
function(callback){
testACL.addUserRoles('nbarr', 'admin', callback);
},
function(callback){
testACL.addUserRoles('turbo', 'client', callback);
},
function(callback){
testACL.addRoleParents('admin', ['allroles'], callback);
},
function(callback){
testACL.addRoleParents('client', ['allroles'], callback);
},
function(callback){
testACL.addUserRoles('tudo', ['allroles'], callback);
},
function(callback){
testACL.allowedPermissions('nbarr', ['campaigns', 'reports', 'inexistent'], function(err, permissions) {
//console.log(permissions);
callback(err, permissions);
});
},
function(callback){
testACL.isAllowed('nbarr', ['campaigns', 'reports'], ['read', 'delete'], function(err, isAllowed) {
console.log(isAllowed);
callback(err, isAllowed);
});
},
function(callback){
testACL.isAllowed('nbarr', 'campaigns', 'read', function(err, isAllowed) {
console.log(isAllowed);
callback(err, isAllowed);
});
}
]);
*/
/*
testACL.allow(['role30', 'role40'], ['resource50', 'resource60'], ['create', 'edit', 'erase', 'view'], function(err, relationships) {
//testNode1 = createdUser;
console.log(relationships);
});
testACL.removeAllow('role30', ['resource50', 'resource60'], ['edit', 'erase'], function(err, relationships) {
//testNode1 = createdUser;
console.log(relationships);
});
*/
/*
testACL.connector.createNode(labels1, properties1, function(err, createdNode) {
testNode1 = createdNode;
console.log(createdNode);
testACL.connector.addNodeProperties(testNode1._id, properties2, function(err, success) {
console.log(success);
testACL.connector.getNode(testNode1._id, function(err, retrievedNode) {
console.log(retrievedNode);
});
});
});
*/
/*
testACL.addUserRoles('user1', ['role1', 'role2', 'role3'], function(err, createdUser) {
testNode1 = createdUser;
console.log(createdUser);
testACL.userRoles('user1', function(err, roles) {
console.log(roles);
});
});
*/
/*
testACL.addUserRoles('user1', ['role1', 'role2', 'role3'], function(err, createdUser) {
testNode1 = createdUser;
testACL.addUserRoles('user2', ['role4', 'role2', 'role3', 'role5'], function(err, createdUser2) {
testNode2 = createdUser2;
testACL.removeUserRoles('user2', ['role2', 'role3'], function(err, response) {
//testNode2 = createdUser2;
console.log(response);
});
});
});
*/
/*testACL._createUser('usertest', function(err, createdNode) {
testNode1 = createdNode;
console.log(createdNode);
});*/
/*
testACL.connector.createNode(labels1, properties1, function(err, createdNode) {
testNode1 = createdNode;
console.log(createdNode);
testACL.connector.addNodeProperties(testNode1._id, properties2, function(err, success) {
console.log(success);
testACL.connector.getNode(testNode1._id, function(err, retrievedNode) {
console.log(retrievedNode);
});
});
});
*/