New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@tipe/roles

Package Overview
Dependencies
Maintainers
4
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@tipe/roles - npm Package Compare versions

Comparing version 0.1.4 to 0.1.6

src/roles.js

9

package.json
{
"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"
}
}

@@ -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')
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc