OpenVeo Core server

API Docs for: 7.0.0
Show:

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

Methods

buildPermissions

Syntax

buildPermissions

(
  • entities
  • plugins
  • callback
)
static async

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.

Parameters:

  • entities Object

    Entities to build permissions from

  • plugins Array

    The list of plugins

  • callback Function

    Function to call when its done with :

    • Error An error if something went wrong
    • Array The list of generated persmissions

buildScopes

Syntax

buildScopes

(
  • entities
  • plugins
)
Array static

Summary

Builds the list of scopes.

Parameters:

  • entities Object

    Entities to build scopes from

  • plugins Array

    The list of plugins

Returns:

Array:

The list of generated scopes

generateEntityPermissions

Syntax

generateEntityPermissions

(
  • pluginsEntities
)
Object static

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 Object

    The list of entities ordered by plugins

Returns:

Object:

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

generateEntityScopes

(
  • pluginsEntities
)
Array static

Summary

Builds entities' scopes.

Parameters:

  • pluginsEntities Object

    The list of entities

Returns:

Array:

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

groupOrphanedPermissions

(
  • permissions
)
Object static

Summary

Reorganizes orphaned top permissions into a generic group.

Parameters:

  • permissions Object

    The list of permissions with group permissions and eventually orphaned permission not attached to any group

Returns:

Object:

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
)
private

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.

Parameters:

  • pluginName String

    Plugin's name

  • permissions Object

    Plugin's permissions