Skip to content

Commit

Permalink
simple role
Browse files Browse the repository at this point in the history
  • Loading branch information
arlac77 committed Oct 9, 2012
1 parent eea164a commit 8f0a964
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 9 deletions.
32 changes: 24 additions & 8 deletions entitlement.js
Expand Up @@ -24,24 +24,40 @@ function Entitlement(id,options)

var _entitlements = {};

function Entitlements(ents)
function registerEntitlements(ents)
{
for(var i in ents) {
_entitlements[i] = Entitlement(i, ents[i]);
}
}

function Role(id,descriptions)
{

function getEntitlement(id) {
return _entitlements[id];
}

function Roles(roles)
var RootRole = {
"toString" : function() { return this.id + ': ' + Object.keys(this.rights).join(','); },
"hasEntitlement" : function(ent) { return this.rights[ent]; }
};

function Role(id,rights)
{

var rs = {};

for(var i in rights) {
var e = rights[i];
rs[e] = _entitlements[e];
if(!rs[e]) rs[e] = Entitlement(e);
}

var defs = {
id: { value: id, enumerable: true },
rights: { value: rs, enumerable: true }};

return Object.create(RootRole, defs);
}

exports.Entitlement = Entitlement;
exports.Entitlements = Entitlements;
exports.registerEntitlements = registerEntitlements;
exports.getEntitlement = getEntitlement;
exports.Role = Role;
exports.Roles = Roles;
12 changes: 11 additions & 1 deletion tests/entitlement.js
@@ -1,6 +1,7 @@
var vows = require('vows'),
assert = require('assert'),
Entitlement = require('../entitlement').Entitlement;
Entitlement = require('../entitlement').Entitlement,
Role = require('../entitlement').Role;

vows.describe('entitlement').addBatch({
'declare single with description': {
Expand All @@ -20,6 +21,15 @@ vows.describe('entitlement').addBatch({
'toString': function(entitlement) {
assert.equal(entitlement.toString(), 'ent1');
}
},
'declare role': {
topic: Role('role1',['ent1']),
'id present': function(entitlement) {
assert.equal(entitlement.id, 'role1');
},
'toString': function(entitlement) {
assert.equal(entitlement.toString(), 'role1: ent1');
}
}
}).export(module);

0 comments on commit 8f0a964

Please sign in to comment.