permissionLoader
Summary
Provides functions to interpret permissions definition from core and plugins.
Permissions comes from 2 different things :
- Core and plugin's configuration files
- Groups of users which are entities
Item Index
Methods
- buildPermissions static
- buildScopes static
- generateEntityPermissions static
- generateEntityScopes static
- groupOrphanedPermissions static
- prefixPermissions
Methods
buildPermissions
Syntax
buildPermissions
-
entities
-
plugins
-
callback
Summary
Builds the list of permissions.
add/delete/update permissions are generated for each entity and get/update/delete permissions are created for each group.
Orphaned permissions are grouped in a generic group of permissions.
generateEntityPermissions
Syntax
Summary
Generates add/update/delete permissions for entities.
Permission's translation keys for name and description are generated using the formats "PERMISSIONS.{PLUGIN_NAME}{OPERATION}{ENTITY_NAME}NAME" and "PERMISSIONS.{PLUGIN_NAME}{OPERATION}_{ENTITY_NAME}_DESCRIPTION".
Content entities won't generate any permissions.
Parameters:
-
pluginsEntities
ObjectThe list of entities ordered by plugins
Returns:
Permissions for all entities
Example:
var permissionLoader= process.require('app/server/loaders/permissionLoader.js');
var entities = {
{
core: {
mountPath: '/',
path: '/home/openveo/',
entities: {
applications: 'app/server/controllers/ApplicationController'
}
},
publish: {
mountPath: '/publish',
path: '/home/openveo/node_modules/@openveo/publish/',
entities: {
videos: 'app/server/controllers/VideoController'
}
}
}
};
console.log(permissionLoader.generateEntityPermissions(entities));
// [
// {
// label: 'CORE.PERMISSIONS.GROUP_APPLICATIONS',
// permissions: [
// {
// id : 'core-add-applications',
// name : 'CORE.PERMISSIONS.ADD_APPLICATIONS_NAME',
// description : 'CORE.PERMISSIONS.ADD_APPLICATIONS_DESCRIPTION',
// paths : [ 'put /applications*' ]
// },
// {
// id : 'core-update-applications',
// name : 'CORE.PERMISSIONS.UPDATE_APPLICATIONS_NAME',
// description : 'CORE.PERMISSIONS.UPDATE_APPLICATIONS_DESCRIPTION',
// paths : [ 'post /applications*' ]
// },
// {
// id : 'core-delete-applications',
// name : 'CORE.PERMISSIONS.DELETE_APPLICATIONS_NAME',
// description : 'CORE.PERMISSIONS.DELETE_APPLICATIONS_DESCRIPTION',
// paths : [ 'delete /applications*' ]
// }
// ]
// },
// {
// label: 'PUBLISH.PERMISSIONS.GROUP_VIDEOS',
// permissions: [
// {
// id : 'publish-add-videos',
// name : 'PUBLISH.PERMISSIONS.ADD_VIDEOS_NAME',
// description : 'PUBLISH.PERMISSIONS.ADD_VIDEOS_DESCRIPTION',
// paths : [ 'put /publish/videos*' ]
// },
// {
// id : 'publish-update-videos',
// name : 'PUBLISH.PERMISSIONS.UPDATE_VIDEOS_NAME',
// description : 'PUBLISH.PERMISSIONS.UPDATE_VIDEOS_DESCRIPTION',
// paths : [ 'post /publish/videos*' ]
// },
// {
// id : 'publish-delete-videos',
// name : 'PUBLISH.PERMISSIONS.DELETE_VIDEOS_NAME',
// description : 'PUBLISH.PERMISSIONS.DELETE_VIDEOS_DESCRIPTION',
// paths : [ 'delete /publish/videos*' ]
// }
// ]
// }
// ]
generateEntityScopes
Syntax
Summary
Builds entities' scopes.
Parameters:
-
pluginsEntities
ObjectThe list of entities
Returns:
The list of web service scopes for all entities exposed by all plugins
Example:
// List of entities by plugin
{
publish: {
mountPath: '/publish',
path: '/home/openveo/node_modules/@openveo/publish',
entities: {
videos: 'app/server/controllers/VideoController'
}
}
}
// Result
[
{
id: 'publish-get-videos',
name: 'PUBLISH.WS_SCOPES.GET_VIDEOS_NAME',
description: 'PUBLISH.WS_SCOPES.GET_VIDEOS_DESCRIPTON',
paths: [
'get /publish/videos*'
]
},
{
id: 'publish-add-videos',
name: 'PUBLISH.WS_SCOPES.ADD_VIDEOS_NAME',
description: 'PUBLISH.WS_SCOPES.ADD_VIDEOS_DESCRIPTON',
paths: [
'put /publish/videos*'
]
},
{
id: 'publish-update-videos',
name: 'PUBLISH.WS_SCOPES.UPDATE_VIDEOS_NAME',
description: 'PUBLISH.WS_SCOPES.UPDATE_VIDEOS_DESCRIPTON',
paths: [
'post /publish/videos*'
]
},
{
id: 'publish-delete-videos',
name: 'PUBLISH.WS_SCOPES.DELETE_VIDEOS_NAME',
description: 'PUBLISH.WS_SCOPES.DELETE_VIDEOS_DESCRIPTON',
paths: [
'delete /publish/videos*'
]
}
]
groupOrphanedPermissions
Syntax
Summary
Reorganizes orphaned top permissions into a generic group.
Parameters:
-
permissions
ObjectThe list of permissions with group permissions and eventually orphaned permission not attached to any group
Returns:
The same list of permissions except that orphaned permissions are extracted into a generic group
Example:
var permissionLoader= process.require('app/server/loaders/permissionLoader.js');
var permissions = [
{
'id' : 'orphaned-permission',
'name' : 'ORPHANED_PERM_NAME',
'description' : 'ORPHANED_PERM_DESCRIPTION'
}
];
console.log(permissionLoader.groupOrphanedPermissions(permissions));
// [
// {
// label: 'CORE.PERMISSIONS.GROUP_OTHERS',
// permissions: [
// {
// 'id' : 'orphaned-permission',
// 'name' : 'ORPHANED_PERM_NAME',
// 'description' : 'ORPHANED_PERM_DESCRIPTION'
// }
// ]
// }
// ]
prefixPermissions
Syntax
prefixPermissions
-
pluginName
-
permissions
Summary
Makes sure all permissions of a plugin are prefixed by the name of the plugin.
If a permission is not prefixed by the name of the plugin, the prefix is automatically added.