Строим блог на основе Node.js MVC фреймворка Areto

Модуль администрирования

Модульная структура позволяет легко разрабатывать и управлять различными частями сайта.

Модуль администрирования блога

Создайте в корне приложения директорию modules/admin. Внутри модуля структура файлов может соответствовать структуре файлов приложения. Фактически модуль заключает в себе мини-приложение. Он может иметь собственную конфигурацию, наследовать или создавать компоненты, содержать дочерние модули.

Для защиты модуля администрирования от неавторизованного доступа, в объектах класса Admin применяется фильтр areto/filters/AccessControl. Фильтр базируется на правилах, определяемых в параметре rules. Каждый элемент правила инициализирует объект класса areto/filters/AccessRule.

Свойство allow определяет тип правила - разрешающее (true) или запрещающее (false). Свойство roles содержит массив ролей, для которых разрешается правило. Помимо ролей определенных в rbac/items, доступны две встроенные роли:

  • ? - обозначает анонимного (guest) пользователя.
  • @ - обозначает залогиненного пользователя.

Если пользователь анонимен, то фильтр переадресует его на форму входа. Для залогиненного пользователя, который не имеет права доступа, отображается сообщение «403 Доступ запрещен».

modules/admin/module.js

'use strict';
const Base = require('areto/base/Module');
class Admin extends Base {
  static getConstants ()  {
    return {
      BEHAVIORS: {
        access: {
          Class: require('areto/filters/AccessControl'),
          rules: [{
            allow: true,
            roles: ['reader']
          }]
        }
      }
    };
  }
}
module.exports = new (Admin.init(module));

В конфигурацию приложения добавьте секцию modules, в которую включите модуль администрирования. Теперь все действия администрирования будут доступны по маршруту /admin/{controller}/{action}.

config/default.js

...
module.exports = {
  ...
  modules:  {
    'admin': {}
  },
  ...
};