tensult/role-acl

View on GitHub
src/core/IAccessInfo.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { ICondition } from './ICondition';

/**
 *  An interface that defines an access information to be granted or denied.
 *  When you start a method chain with `AccessControl#grant` or `AccessControl#deny`
 *  methods, you're actually building this  object which will eventually be
 *  committed to the underlying grants model.
 *  @interface
 */

interface IAccessInfo {
    /**
     *  Indicates a single or multiple roles for this access information.
     *  @type {String|Array<String>}
     */
    role?: string | string[];

     /**
     *  Indicates a single or multiple roles to be extended by this role
     *  @type {Array<String>}
     */
    extend?: string[];
    /**
     *  Indicates a single or multiple target resources for this access
     *  information.
     *  @type {String|Array<String>}
     */
    resource?: string | string[];
    /**
     *  Defines the resource attributes which are granted. If denied, this will
     *  default to an empty array.
     *  @type {String|Array<String>}
     */
    attributes?: string | string[];
    /**
     *  Defines the type of the operation that is (or not) to be performed on
     *  the resource(s) by the defined role(s).
     *  See {@link ?api=ac#AccessControl.Action|`AccessControl.Action` enumeration}
     *  for possible values.
     *  @type {String}
     */
    action?: string | string[];
    /**
     *  Defines the condition of the resource(s) for the specified action.
     *  for possible values.
     *  @type {ICondition}
     */
    condition?: ICondition;
}

export { IAccessInfo };

// tsc removes the code above so we document for JSDoc below.

/**
 *  An interface that defines an access information to be granted or denied.
 *  When you start a method chain with `AccessControl#grant` or `AccessControl#deny`
 *  methods, you're actually building this  object which will eventually be
 *  committed to the underlying grants model.
 *  @typedef AccessControl~IAccessInfo
 *  @type Object
 *
 *  @property {String|Array<String>} role
 *  Indicates a single or multiple roles for this access information.
 *
 *  @property {String|Array<String>} resource
 *  Indicates a single or multiple target resources for this access
 *  information.
 *
 *  @property {String|Array<String>} attributes
 *  Defines the resource attributes which are granted. If denied, this will
 *  default to an empty array.
 *
 *  @property {String} action
 *  Defines the type of the operation that is (or not) to be performed on
 *  the resource(s) by the defined role(s).
 *  See {@link ?api=ac#AccessControl.Action|`AccessControl.Action` enumeration}
 *  for possible values.
 */