Pull to refresh

Архитектура Orchard CMS. Концепции безопасности и разработки

Reading time 5 min
Views 4.1K
Это продолжение второй части руководства “Как создать свой сайт с нуля с помощью Orchard CMS”. С первой частью руководства вы можете познакомиться здесь: начало и продолжение. Начало “Архитектура Orchard CMS. Основные понятия” можно найти и прочитать здесь и здесь.

Введение


Для того чтобы начать работать с Orchard CMS необходимо изучить базовые понятия, которые применяются в этой CMS для работы с содержимым. В этой части руководства мы познакомимся с понятиями безопасности и разграничения прав в Orchard CMS и с концепциями используемыми при разработке модулей для системы управления контентом.

Напомню, что автоматическая загрузка Orchard доступна из галереи приложений с помощью средства быстрого доступа к веб-инструментам Web Platform Installer (нажмите на эту ссылку, чтобы начать установку).

Концепции безопасности Orchard CMS


Важной частью каждой системы управления контентом является обеспечение безопасности, разграничение и управление правами пользователей. В этой части руководства мы рассмотрим концепции Orchard CMS относящиеся к безопасности.

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


В Orchard CMS пользователям могут быть присвоены роли, которые обладают набором определенных разрешений и прав доступа. У любого пользователя может быть от одной до нескольких ролей.

Разработчики и администраторы сайтов могут создавать свои собственные роли для пользователей, однако в Orchard CMS по умолчанию уже существует набор базовых ролей:
  • Администратор (Administrator) – пользователи имеют полный доступ ко всем настройкам и контенту веб-сайта;
  • Редактор (Editor) – пользователи могут редактировать и опубликовывать контент созданный другими авторами, но не могут создавать свой контент;
  • Модератор (Moderator) – пользователи осуществляют контроль за пользовательским контентом, таким как комментарии и проверят его на соответствие правилам сайта;
  • Автор (Author) – пользователи могут писать и публиковать контент на сайт;
  • Поставщик (Contributor) – пользователи создают контент, но могут не иметь прав на его публикацию;
  • Анонимный (Anonymous) – неизвестный для системы пользователь, тот, кто не осуществлял входа в систему;
  • Аутентифицированный (Authenticated) – любой пользователь, который вошел в систему.
Любые роли, кроме ролей «анонимный» и «аутентифицированный» могут назначаться вручную. Эти две роли назначаются автоматически во время работы сайта.

clip_image002

clip_image004
Рис. 2.14. Управление пользователями и ролями в панели администрирования Orchard CMS

В Orchard CMS управление ролями и пользователями производится с помощью панели администрирования и соответствующих разделов (рисунок 2.14).

Привилегии и разрешения

В системе управления контентом Orchard все пользователи могут иметь различные привилегии и разрешения на сайте. Права и привилегии производить какие-то действия на сайте описываются в Orchard механизмом разрешений (permissions).

В Orchard CMS разрешения предоставленные ролям наследуются пользователями, которым назначены эти роли. То есть если пользователю назначена роль Администратор, то этот пользователь получает все разрешения, которые присущи роли Администратор (рисунок 2.15).

clip_image006

Рис. 2.15. Редактирование параметров пользователя и его ролей в панели администрирования

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

Некоторые разрешения могут быть получены неявно. Например, если вы дадите пользователю разрешение «владелец сайта», то такой пользователь неявно получить все остальные разрешения.

Так как Orchard CMS основана на модульном подходе, то управление правами и создание набора разрешений возлагается на модули и их разработчиков. Модуль должен определять набор разрешений, которые затем могут быть установлены в панели администрирования Orchard CMS для разных ролей (рисунок 2.16).

clip_image008
Рис. 2.16. Редактирование разрешений для разных модулей у определенной роли в панели администрирования Orchard CMS

Владелец сайта

В системе Orchard CMS существует специальное понятие «владелец сайта» (Site Owner), которое описывает суперпользователя. Этот пользователь задается на этапе первичной настройки CMS (по умолчанию ему присваивается имя admin, которое можно сменить).

Владельцу сайта по умолчанию выдаются разрешения на все возможные действия с сайтом и его содержимым. Этот набор разрешений можно изменить через панель управления.

Кроме того, в Orchard CMS существует разрешение «Site Owners Permission» (разрешение Владелец Сайта), которое позволяет выдать права суперпользователя целой роли. Это разрешение по умолчанию выдано роли администраторов (рисунок 2.16).

Концепции разработки Orchard CMS


Разработчикам модулей Orchard CMS необходимо знать ряд концепций, которыми оперирует это средство управления контентом. Большинство концепций относится к разработке программного обеспечения и фреймворку ASP.NET MVC.

Подробнее мы познакомимся с этими концепциями при изучении разработки модулей для CMS.

Обработчик

Обработчик – это концепция Orchard, которая похожа на фильтры действий в ASP.NET MVC. Обработчики в Orchard представляют собой код, который выполняется в ответ на некое событие во время выполнения обработки запроса.

Для создания обработчика используется класс ContentHandler, от которого необходимо наследовать класс обработчика.

События, на которые обработчик может реагировать обрабатываются следующими методами:
  • OnActivated
  • OnCreated
  • OnCreating
  • OnIndexed
  • OnIndexing
  • OnInitializing
  • OnLoaded
  • OnLoading
  • OnPublished
  • OnPublishing
  • OnRemoved
  • OnRemoving
  • OnUnpublished
  • OnUnpublishing
  • OnVersioned
  • OnVersioning

Драйвер

Драйвер – это концепция Orchard, которая похожа на контроллеры в ASP.NET MVC. В отличие от контроллеров, драйверы работают на уровне содержимого, а не запросов. Драйверы занимаются подготовкой форм для отображения и обрабатывают запросы от панели управления.

Классы драйверов наследуются от класса ContentPartDriver<>.

Запись

Запись (Record) – это класс, который представляет базу данных в части контента. Записи являются POCO-объектами, в которых каждое свойство должно быть виртуальным.

clip_image009

Классы записей наследуются от класса ContentPartRecord.

Модель

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

Миграция

Миграция – это описание операций, которые необходимо выполнить во время первой установки функции или при ее обновлении со старой версии на новую версию. Эта концепция позволяет осуществлять мягкое обновление функций без потерь данных. Система Orchard CMS предоставляет специальный инструмент для миграции данных.

Инъекция

Инъекции кода широко используются в Orchard CMS. Когда коду потребуется зависимость, этот код потребует инъекции одного или нескольких экземпляров определенного интерфейса. Фреймворк Orchard CMS автоматически позаботится о выборке, создании экземпляра и инъекции правильного кода во время исполнения.

Заключение


Во второй части руководства по Orchard CMS мы рассмотрели важнейшие концепции, которыми оперирует эта система управления контентом.

Мы познакомились с понятиями и терминами, которые используются в Orchard CMS при работе с контентом. Узнали основные концепции механизма компоновки системы. Рассмотрели систему обеспечения безопасности и разграничения прав. И наконец, познакомились с концепциями Orchard CMS, которые употребляются при разработки модулей для этой системы.

В следующей части руководства мы ближе познакомимся с виджетами и с механизмом расширения функционала Orchard CMS.
Tags:
Hubs:
+11
Comments 8
Comments Comments 8

Articles