Роли

Существует два способа описать роль, которые могут использоваться одновременно:

Результирующая матрица прав для роли определяется как объединение множеств полномочий в соответствующих ячейках матриц расширяемых ролей и явно заданной матрицы.

Расширение ролей

Расширение ролей выполняется с помощью элемента extends, который содержит список расширяемых ролей (список может быть пустым). Все расширяемые роли должны быть ранее определены:

roles: {

...

roleX : {

extends : [roleY, roleZ] // Роль roleX расширяет роли roleY и roleZ

}

...

}

Явное задание матрицы прав

Явное задание матрицы выполняется с помощью элемента rights, который представляет собой массив троек: субъект (элемент from), объект, к которому требуется доступ (элемент to) и множество полномочий (элемент permissions).

Субъект и объект задаются одним из следующих способов:

Полномочия задаются одним из следующих способов:

Пример:

roles : {

system : {

rights :[

{ from : @any /* любой тип */

, to : connection_manager /* конкретный тип */

, permissions : conn/@any /* любое полномочие из категории conn */

},

{ from : tls

, to : connection_manager

, permissions : [ stream/read, stream/set_status ] /* любое из перечисленных полномочий */

},

{ from : @any

, to : tls

, permissions : stream/@any

}

]

},

camera : {

rights : [

{ from : @any

, to : camera

, permissions : camera/@any

}

]

},

gps : {

rights : [

{ from : @any

, to : gps

, permissions : gps/@any

}

]

},

user : {

extends : system /* расширяет роль system */

},

admin : {

extends : [user, camera] /* расширяет роли user & camera */

}

}

В начало