Пользователи и права

Ограничение доступа

Плагины могут создавать свои права при помощи метода registerPermissions(), который находится в классе регистрации плагина. Права представляют из себя массив, где значение - это описание доступа, а ключ - название доступа. Название доступа состоит из имени автора плагина, его названия и названия функционала. Пример:

public function registerPermissions()
{
    return [
        'acme.blog.access_posts' => [
            'label' => 'Manage the blog posts',
            'tab' => 'Blog'
        ],
        'acme.blog.access_categories' => [
            'label' => 'Manage the blog categories',
            'tab' => 'Blog'
        ]
    ];
}

Ограничение доступа к административным страницам

В классе контроллера Вы можете указать права, которые необходимо иметь пользователю для получения доступа к страницам контроллера. Это делается при помощи свойства $requiredPermissions типа массив, в котором перечисляются ключи указанные в методе $registerPermissions. Если права пользователя совпадают с одним из значений массива, то OctoberCMS пустит пользователя на нужную ему страницу. Пример:

<?php namespace Acme\Blog\Controllers;

use Backend\Classes\BackendController;

class Posts extends BackendController
{
    public $requiredPermissions = ['acme.blog.access_posts'];

Вы можете использовать символ * для не строгой проверки. В следующем примере контроллер доступен для всех пользователей, которые имеют права и начинаются с "acme.blog.":

public $requiredPermissions = ['acme.blog.*'];

Ограничение доступа к функционалу

Модель, в которой хранится информация о зарегистрированных пользователях имеет методы для проверки прав: hasPermission() и hasAccess(). Вы можете использовать их, чтобы ограничить доступ к некоторому функционалу административного интерфейса. Оба метода принимают два параметра: название доступа (или массив с названиями) и необязательный параметр, который указывает на то, что все значения в первом параметре являются обязательными.

Метод hasAccess() возвращает true для всех доступов, если пользователь - администратор. Метод hasPermission() - более строгий. В следующем примере показано, как использовать эти методы в контроллере:

if ($this->user->hasAccess('acme.blog.*'))
    ...

if ($this->user->hasPermission(['acme.blog.access_posts', 'acme.blog.access_categories']))
    ...

Вы также можете применять эти методы в представлениях, чтобы скрыть определенные элементы:

<?php if ($this->user->hasAccess('acme.blog.delete_categories')): ?>
    <button
        type="button"
        class="oc-icon-trash-o btn-icon danger pull-right"
        data-request="onDelete"
        data-load-indicator="Deleting Category..."
        data-request-confirm="Do you really want to delete this category?">
    </button>
<?php endif ?>