@tipe/roles
Advanced tools
Comparing version 0.1.4 to 0.1.6
{ | ||
"name": "@tipe/roles", | ||
"version": "0.1.4", | ||
"version": "0.1.6", | ||
"description": "", | ||
"main": "src/index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"test": "jest" | ||
}, | ||
@@ -19,3 +19,6 @@ "repository": { | ||
"homepage": "https://github.com/tipeio/tipe-roles#readme", | ||
"dependencies": {} | ||
"dependencies": {}, | ||
"devDependencies": { | ||
"jest": "^21.2.1" | ||
} | ||
} |
298
src/index.js
@@ -1,297 +0,1 @@ | ||
exports.policies = ['Org', 'Project', 'Model', 'Content'] | ||
.reduce((result, type) => { | ||
const actions = { | ||
'create': `Create${type}`, | ||
'read': `Read${type}`, | ||
'update': `Update${type}`, | ||
'delete': `Delete${type}` | ||
} | ||
if (type === 'Content') { | ||
actions['publish'] = `Publish${type}` | ||
} | ||
if (type === 'Org') { | ||
actions['subscription'] = `Subscription${type}` | ||
actions['invite'] = `Invite${type}` | ||
} | ||
result[type] = { type, actions } | ||
return result | ||
}, {}) | ||
exports.allPolicies = { | ||
'Org_create': exports.policies.Org.actions.create, | ||
'Org_read': exports.policies.Org.actions.read, | ||
'Org_write': exports.policies.Org.actions.write, | ||
'Org_delete': exports.policies.Org.actions.delete, | ||
'Org_subscription': exports.policies.Org.actions.subscription, | ||
'Org_invites': exports.policies.Org.actions.invites, | ||
'Project_create': exports.policies.Project.actions.create, | ||
'Project_read': exports.policies.Project.actions.read, | ||
'Project_write': exports.policies.Project.actions.write, | ||
'Project_delete': exports.policies.Project.actions.delete, | ||
'Model_create': exports.policies.Model.actions.create, | ||
'Model_read': exports.policies.Model.actions.read, | ||
'Model_write': exports.policies.Model.actions.write, | ||
'Model_delete': exports.policies.Model.actions.delete, | ||
'Model_publish': exports.policies.Model.actions.publish, | ||
'Content_create': exports.policies.Content.actions.create, | ||
'Content_read': exports.policies.Content.actions.read, | ||
'Content_write': exports.policies.Content.actions.write, | ||
'Content_delete': exports.policies.Content.actions.delete, | ||
'Content_publish': exports.policies.Content.actions.publish | ||
} | ||
exports.roles = { | ||
Owner: 'Owner', | ||
Admin: 'Admin', | ||
PM: 'PM', | ||
Creator: 'Creator', | ||
Member: 'Member', | ||
Editor: 'Editor' | ||
} | ||
exports.roleToPolicies = function roleToPolicies(role) { | ||
if (typeof role !== 'string') { | ||
throw new Error('roleToPolicies ' + role + ' needs to be type string') | ||
} | ||
switch (role) { | ||
case exports.roles.Owner: return exports.owner().policies | ||
case exports.roles.Admin: return exports.admin().policies | ||
case exports.roles.PM: return exports.pm().policies | ||
case exports.roles.Creator: return exports.creator().policies | ||
case exports.roles.Member: return exports.member().policies | ||
case exports.roles.Editor: return exports.editor().policies | ||
default: return [] | ||
} | ||
} | ||
exports.owner = function owner() { | ||
return { | ||
name: exports.roles.Owner, | ||
policies: [ | ||
exports.policies.Org.actions.create, | ||
exports.policies.Org.actions.read, | ||
exports.policies.Org.actions.write, | ||
exports.policies.Org.actions.delete, | ||
exports.policies.Org.actions.subscription, | ||
exports.policies.Org.actions.invites, | ||
exports.policies.Project.actions.create, | ||
exports.policies.Project.actions.read, | ||
exports.policies.Project.actions.write, | ||
exports.policies.Project.actions.delete, | ||
exports.policies.Model.actions.create, | ||
exports.policies.Model.actions.read, | ||
exports.policies.Model.actions.write, | ||
exports.policies.Model.actions.delete, | ||
exports.policies.Model.actions.publish, | ||
exports.policies.Content.actions.create, | ||
exports.policies.Content.actions.read, | ||
exports.policies.Content.actions.write, | ||
exports.policies.Content.actions.delete, | ||
exports.policies.Content.actions.publish | ||
] | ||
} | ||
} | ||
exports.admin = function admin() { | ||
return { | ||
name: exports.roles.Admin, | ||
policies: [ | ||
// exports.policies.Org.actions.create, | ||
exports.policies.Org.actions.read, | ||
exports.policies.Org.actions.write, | ||
// exports.policies.Org.actions.delete, | ||
// exports.policies.Org.actions.subscription, | ||
// exports.policies.Org.actions.invites, | ||
exports.policies.Project.actions.create, | ||
exports.policies.Project.actions.read, | ||
exports.policies.Project.actions.write, | ||
exports.policies.Project.actions.delete, | ||
exports.policies.Model.actions.create, | ||
exports.policies.Model.actions.read, | ||
exports.policies.Model.actions.write, | ||
exports.policies.Model.actions.delete, | ||
exports.policies.Model.actions.publish, | ||
exports.policies.Content.actions.create, | ||
exports.policies.Content.actions.read, | ||
exports.policies.Content.actions.write, | ||
exports.policies.Content.actions.delete, | ||
exports.policies.Content.actions.publish | ||
] | ||
} | ||
} | ||
exports.pm = function pm() { | ||
return { | ||
name: exports.roles.PM, | ||
policies: [ | ||
// exports.policies.Org.actions.create, | ||
exports.policies.Org.actions.read, | ||
// exports.policies.Org.actions.write, | ||
// exports.policies.Org.actions.delete, | ||
// exports.policies.Org.actions.subscription, | ||
// exports.policies.Org.actions.invites, | ||
exports.policies.Project.actions.create, | ||
exports.policies.Project.actions.read, | ||
exports.policies.Project.actions.write, | ||
exports.policies.Project.actions.delete, | ||
exports.policies.Model.actions.create, | ||
exports.policies.Model.actions.read, | ||
exports.policies.Model.actions.write, | ||
exports.policies.Model.actions.delete, | ||
exports.policies.Model.actions.publish, | ||
exports.policies.Content.actions.create, | ||
exports.policies.Content.actions.read, | ||
exports.policies.Content.actions.write, | ||
exports.policies.Content.actions.delete, | ||
exports.policies.Content.actions.publish | ||
] | ||
} | ||
} | ||
exports.creator = function creator() { | ||
return { | ||
name: exports.roles.Creator, | ||
policies: [ | ||
// exports.policies.Org.actions.create, | ||
exports.policies.Org.actions.read, | ||
// exports.policies.Org.actions.write, | ||
// exports.policies.Org.actions.delete, | ||
// exports.policies.Org.actions.subscription, | ||
// exports.policies.Org.actions.invites, | ||
// exports.policies.Project.actions.create, | ||
exports.policies.Project.actions.read, | ||
// exports.policies.Project.actions.write, | ||
// exports.policies.Project.actions.delete, | ||
// exports.policies.Model.actions.create, | ||
exports.policies.Model.actions.read, | ||
// exports.policies.Model.actions.write, | ||
// exports.policies.Model.actions.delete, | ||
exports.policies.Content.actions.create, | ||
exports.policies.Content.actions.read, | ||
exports.policies.Content.actions.write | ||
// exports.policies.Content.actions.delete, | ||
// exports.policies.Content.actions.publish, | ||
] | ||
} | ||
} | ||
exports.member = function member() { | ||
return { | ||
name: exports.roles.Member, | ||
policies: [ | ||
// exports.policies.Org.actions.create, | ||
exports.policies.Org.actions.read, | ||
// exports.policies.Org.actions.write, | ||
// exports.policies.Org.actions.delete, | ||
// exports.policies.Org.actions.subscription, | ||
// exports.policies.Org.actions.invites, | ||
// exports.policies.Project.actions.create, | ||
exports.policies.Project.actions.read, | ||
// exports.policies.Project.actions.write, | ||
// exports.policies.Project.actions.delete, | ||
// exports.policies.Model.actions.create, | ||
exports.policies.Model.actions.read, | ||
// exports.policies.Model.actions.write, | ||
// exports.policies.Model.actions.delete, | ||
// exports.policies.Content.actions.create, | ||
exports.policies.Content.actions.read | ||
// exports.policies.Content.actions.write, | ||
// exports.policies.Content.actions.delete, | ||
// exports.policies.Content.actions.publish, | ||
] | ||
} | ||
} | ||
exports.editor = function editor() { | ||
return { | ||
name: exports.roles.Editor, | ||
policies: [ | ||
// exports.policies.Org.actions.create, | ||
exports.policies.Org.actions.read, | ||
// exports.policies.Org.actions.write, | ||
// exports.policies.Org.actions.delete, | ||
// exports.policies.Org.actions.subscription, | ||
// exports.policies.Org.actions.invites, | ||
// exports.policies.Project.actions.create, | ||
exports.policies.Project.actions.read, | ||
// exports.policies.Project.actions.write, | ||
// exports.policies.Project.actions.delete, | ||
// exports.policies.Model.actions.create, | ||
exports.policies.Model.actions.read, | ||
// exports.policies.Model.actions.write, | ||
// exports.policies.Model.actions.delete, | ||
exports.policies.Content.actions.create, | ||
exports.policies.Content.actions.read, | ||
exports.policies.Content.actions.write, | ||
exports.policies.Content.actions.delete, | ||
exports.policies.Content.actions.publish | ||
] | ||
} | ||
} | ||
exports.isAllowed = function isAllowed(policy, id, type, roles) { | ||
// list of all policies in project plus org | ||
return exports.getRoles(id, type, roles).indexOf(policy) !== -1 | ||
} | ||
exports.getRoles = function getRoles(id, type, roles, onError) { | ||
if (type === 'ORG_ROLE') { | ||
const orgRole = roles.find(role => role.org.toString() === id.toString()) | ||
if (!orgRole) { | ||
return [] | ||
} | ||
return exports.roleToPolicies(orgRole.roles) | ||
} | ||
const orgs = {} | ||
const projectRole = roles | ||
.filter(function(role) { | ||
if (role.type === 'ORG_ROLE') { | ||
// refactor roles to role | ||
orgs[role.org] = role.role || role.roles | ||
} | ||
return role.type === 'PROJECT_ROLE' | ||
}) | ||
.find(function(role) { return role.project.toString() === id.toString() }) | ||
if (!projectRole) { | ||
return [] | ||
} | ||
const orgRoles = orgs[projectRole.org] || [] | ||
const combinedRoles = [].concat( | ||
orgRoles, | ||
// refactor roles to role | ||
projectRole.role || projectRole.roles | ||
) | ||
return combinedRoles.map(function(role) { | ||
return exports.roleToPolicies(role) | ||
}) | ||
} | ||
module.exports = require('./roles') |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
10707
6
271
2
1
1