Начало работы


Blank CLI


Blank Schema


Serverside JS API


HTTP API


Интеграция


Access control

Управление доступом в Blank построено на основе ролей с применением системы условий. Права можно назначить на Store, на отдельные свойства (prop) и действия (action) в Store.

При установке прав доступа задается массив правил типа AccessRule:

access: AccessRule[]

AccessRule {
    role: "roleName",
    permissions: "Permissions string",
    condition: MongoQuery {}
}

Значение по-умолчанию

Если права не указаны, по-умолчанию у всех будет полный доступ, как если бы было задано такое правило:

    access: [{ role: "all", permissions: "crud" }]

Если параметр задан, доступ получат только те роли, которые указаны в параметре, в соответствии с их разрешениями.

Permissions

Набор разрешений, зависит от объекта прав доступа:

  • Store: vcrudx
  • Prop: ru
  • Action: x

где:

  • v — отображение Store в пользовательском интерфейсе;
  • c — создание объектов в Store;
  • r — чтение объектов из Store;
  • u — изменение объектов в Store;
  • d — удаление объектов из Store;
  • x — запуск Actions в Store;

Если требуется указать запрет на какое-либо действие, перед символом разрешения добавляется знак -:

    access: [{ role: "manager", permissions: "cr -d" }]

Запреты имеют приоритет над разрешениями. В данном примере установлен запрет на удаление объектов из Store.

Conditions

Используется только при установке прав доступа на Store. Требуется, если разрешения зависят от самого объекта или свойств пользователя, отличных от роли.

Condition задаётся в формате MongoDB Query с дополнительным оператором $expression, который будет обработан до передачи запроса в БД, например:

condition: {
    _ownerId: {
        $expression: "$user._id",
    },
},

Такой condition сделает разрешения валидными только для объектов, владельцем которых является пользователь. Допустим, пользователь с _id: “1” делает запрос Find. Он получит доступ только к тем объектам, которые удовлетворяют условию:

{ _ownerId: "1" }

$expression — выражение на JavaScript, в котором доступна переменная $user.

Роль root

Роль root зарезервирована и в неё входит только один пользователь – сам root.

В отличие от других ролей, если разрешения для root не указаны явно, у root будет полный доступ.