Сервисы Optimizer 2.5

Введение

В рамках продукта Optimizer реализованы некоторые наиболее используемые на web-сайтах функциональные модули, называемые сервисами. Сервис в Optimizer представляет собой набор шаблонов, администраторских интерфейсов, команд, данных и процедур, реализующих какую либо функциональную задачу.

В системе присутствуют следующие готовые сервисы:

-  Регистрация / авторизация

-  форум

-  подписка

-  faq

-  система голосований

-  система пользовательских документов

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

Регистрация / Авторизация

Сервис регистрации предоставляет возможность заносить в базу данных системы персональную информацию пользователей сайта и ограничивать/индивидуализировать доступ групп пользователей к произвольным объектам и сервисам сайта. Авторизованные пользователи, в зависимости от группы, которой они принадлежат, могут иметь разный доступ к системе и формы работы с ней.

Регистрация пользователей в системе возможна двумя способами:

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

Процесс регистрации пользователя администратором системы состоит в создании нового объекта типа ‘Пользователь’, заполнении его персональной информации и привязки его к одной из существующих групп пользователей.

НЕ нашли? Не то? Что вы ищете?

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

Система регистрации для пользователя системы

Для пользователя сайта система регистрации выглядит следующим образом:

Блок авторизации

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

Для неавторизованного пользователя содержит поля ввода логина и пароля, а также ссылки страницу регистрации и восстановления пароля.

после того, как пользователь авторизовался в системе, содержимое блока заменяется на персональную информацию пользователя и ссылки на завершение сеанса работы с системой и страницу изменения регистрационных данных

Страница регистрации нового пользователя

Служит для регистрации нового пользователя в системе. Содержит форму ввода регистрационной информации и пароля пользователя.

Состав информации, необходимой для регистрации пользователя, может настраиваться администратором системы в интерфейсе конфигуратора.

После ввода информации в форму, в зависимости от настроек регистрации, происходит либо регистрация и активация пользователя в системе, либо отправление на его e-mail почтового сообщения со ссылкой для завершения процесса регистрации.

Страница изменения персональных данных пользователя

Авторизованный пользователь может изменить на этой странице информацию, которую ввел ранее при регистрации.

Страница восстановления пароля

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

После ввода своего e-mail на этой странице, в зависимости от настроек системы, пользователю будет предложено либо ответить на секретный вопрос, который он вводил при регистрации и затем поменять пароль на новый, либо новый, сгенерированный системой пароль, будет отправлен на e-mail пользователя.

Настройки регистрации

Настройки сервиса регистрации доступны в разделе “Сервисы” конфигурационного интерфейса (config/) и состоят из следующих страниц: Настройки, Вопросы, Почтовые шаблоны.

Рис. 1

На данной странице устанавливается тип регистрации и возможность указания при регистрации секретного вопроса пользователя.

Тип регистрации

Тип регистрации определяет схему регистрации пользователя.

Обычная схема – после того как пользователь ввел свои персональные данные на странице регистрации, на его почтовый ящик отправляется письмо, в котором содержится ссылка для завершения процедуры регистрации. Пользователь должен пройти по присланной ссылке для своей активации в системе.

Упрощенная схема – пользователь становится активным в системе сразу после заполнения персональных данных на странице регистрации.

Дилерская схема – пользователь заполняет свои данные на странице регистрации и они попадают в систему, но не активируются. Администратор сервера вручную активизирует пользователя в системе после проверки его данных.

Секретный вопрос

При включенной данной опции, пользователю при регистрации будет предложено ввести секретный вопрос и ответ на него, который будет использован для идентификации пользователя в случае, если он утерял свой пароль и хочет его заменить. Список предопределенных секретных вопросов можно задать на странице “Вопросы” этого же раздела.

Почтовые шаблоны

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

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

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

Основным объектом сервиса регистрации являются пользователи системы.

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

Пользователи представляются в системе в виде объектов типа “Пользователь”. Этот тип документов является предопределенным в системе и содержит обязательный набор атрибутов, который может быть дополнен другими произвольными атрибутами.

Персональная информация зарегистрированных пользователей хранится в базе данных системы и доступна в разделе “Пользователи” администраторского интерфейса (рис.2).

Рис 2.

Атрибуты пользователя

Изначально заданные атрибуты пользователя следующие:

Название

Код атрибута

Описание

Идентификатор пользователя

r_uid 

Логин пользователя в системе

Обладает правами конфигуратора

r_is_config 

Бинарное св-во. Пользователи, у которых значение этого поля установлено в 1, обладают правами по администрированию и конфигурированию системы с помощью администраторских интерфейсов (cоздание новых типов документов, новых объектов системы, а также передача прав конфигуратора другим пользователям)

Обладает правами администратора

r_is_admin 

Бинарное св-во. Пользователи, у которых значение этого поля установлено в 1, обладают правом администрирования системы (создание новых объектов в системе)

ФИО

c_name 

Имя пользователя

Активность

c_visible 

Бинарное св-во. Признак активности пользователя. Устанавливается в 1 после активации пользователя.

На первую страницу

c_fp 

Бинарное св-во. Может использоваться по усмотрению разработчиков.

Электронный адрес

r_email 

E-mail пользователя

Псевдоним

r_nickname 

Nickname пользователя в системе. Может использоваться в форумах.

Секретный вопрос для авторизации

r_question 

Секретный вопрос пользователя для возможности восстановления пароля.

Ответ на секретный вопрос

r_answer 

Ответ на секретный вопрос пользователя.

Пароль

r_pwd 

Пароль пользователя для авторизации в системе. Хранится в БД в зашифрованном виде.

К данному набору атрибутов с помощью конфигуратора ( Типы документов > Пользователи > Поля и связи) могут быть добавлены другие произвольные атрибуты.

Группы пользователей

Группы пользователей используются для разграничения прав пользователей в системе. Список групп задается в администраторском интерфейсе в разделе “Группы”.

Неавторизованного пользователя система рассматривает как пользователя принадлежащего группе ‘Все пользователи’.

После авторизации, пользователь принадлежит либо группе “Авторизованные пользователи”, и группе, или нескольким группам, в которые его определил администратор системы.

Работа с правами групп будет рассмотрена ниже в разделах “Разграничение прав доступа” и “Команды для работы с правами”.

Шаблоны регистрации

Сервис регистрации состоит из следующих шаблонов:

web\templates\mail\usr_reg_adminfo. htm

почтовое сообщение, отправляемое администратору системы, при регистрации нового пользователя. Текстовое содержание этого сообщения может определяться в интерфейсе конфигуратора в разделе “Сервисы > Сервис регистрации > Почтовые шаблоны”;

web\templates\mail\usr_reg_confirm. htm

почтовое сообщение, отправляемое пользователю в процессе регистрации и содержащее ссылку, для ее завершения;

web\templates\mail\usr_reg_password. htm

почтовое сообщение, высылаемое пользователю в процессе восстановления пароля и содержащее новый, сгенерированный системой, пароль;

web\templates\show\registration. htm

шаблон отображения системы регистрации;

web\templates\pub\reg_prop. htm

шаблон, содержащий форму регистрации нового пользователя / изменения персональной информации уже существующего пользователя. Непосредственно вывод полей формы с информацией о пользователе осуществляется с помощью подключения шаблона вывода web\templates\sub\client_prop. htm c параметром “pics” (тип объекта “пользователь”)

web\templates\pub\reg_auth. htm

шаблон, содержащий форму авторизации пользователя, блок восстановления пароля и ссылку на страницу регистрации;

Разграничение прав доступа

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

Система разграничения прав обладает следующими возможностями:

-  назначение прав доступа пользователей к типам документов

-  назначение прав доступа к объектам системы (разделов каталога, документов)

Логика работы системы разграничения прав распространяется на всех пользователей системы и едина для клиентской (общедоступной) и администраторской частей системы. Т. е. зарегистрированные пользователи одной группы обладают одними правами как при просмотре страниц сайта, так и при работе с его администраторской частью.

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

Права доступа к типам объектов задаются в конфигураторском интерфейсе в разделе “Типы документов” на странице “Права”.

Рис.3

Права, установленные на тип документа автоматически наследуются всеми документами этого типа в системе. Если установить права на рубрику каталога в системе, то эти права унаследуют все, объекты, находящиеся в этой рубрике.

Права конкретного объекта, которые он унаследовал от прав своего типа или своей рубрики каталога, могут быть переопределены на любые другие, и будут действовать только при доступе к данному конкретному объекту. Переопределить права отдельного объекта можно в администраторском интерфейсе, на странице его прав.

Рис.4

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

Назначение прав на доступ к конкретному объекту (документу, разделу каталога) используется для ограничения доступа пользователей только к данному объекту.

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

Создание – право на создание данной группой пользователей данного типа документов

Чтение списка объектов –право на чтение списка объектов, выводимых командой

Чтение - право на чтение атрибутов данного объекта

Чтение собственных объектов – право на чтение объектов, созданных самим пользователем

Изменение – право на редактирование содержания объекта

Изменение собственных объектов – право на изменение объектов, созданных самим пользователем

Удаление – право на удаление объектов

Удаление собственных объектов – право на удаление объектов, созданных самим пользователем

Изменение прав – право на изменение прав объекта группой пользователей

Внимание!

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

Во всех стандартных шаблонах вывода, присутствующих в комплекте поставки Optimizer реализована проверка прав доступа.

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

-  с помощью стандартных команд Optimizer, в логику которых заложена работа с правами

-  непосредственным использованием логики этих прав в sql-запросах к объектам

Команды для работы с правами

При разработке пользовательских шаблонов, могут быть использованы следующие команды, работающие с правами объектов.

Доступ к документам

Для проверки доступа к отдельным документам используются команды:

<gp@mso@access_enabled>[rights]$$[ob_no]

[код шаблона]

</gp@mso@access_enabled>

где

[rights] – параметр в виде десятичного целого числа, обозначающий права доступа.

В случае, если пользователь обладает правами [rights] или его права включают в себя права [righths], то выполняется часть кода, заключенная между данными тегами.

$$ - разделитель между параметрами

[ob_no] – необязательный параметр, обозначающий идентификатор документа, к которому проверяется доступ. В случае отсутствия этого параметра, команда использует значение параметра ob_no, с которым была вызвана текущая страница.

<gp@mso@access_disabled>[rights]$$[ob_no]

[код шаблона]

</gp@mso@access_disabled>

Доступ к типам документов

Для проверки доступа к типам документов используются команды:

<gp@mso@access_enabled_class>[rights]$$[cl_code]

[код шаблона]

</gp@mso@access_enabled_class>

где

[cl_code] – необязательный параметр обозначающий идентификатор типа документов, к которому проверяется доступ. В случае отсутствия этого параметра, команда использует значение параметра cl_code, с которым была вызвана текущая страница

Параметр [rights] можно получить путем обычного сложения целых чисел, обозначающих следующие права:

1

read

Чтение

2

read_list

Чтение списка объектов

4

create

Создание

8

update

Изменение

16

update_own

Изменение собственных объектов

32

delete

Удаление

64

delete_own

Удаление собственных объектов

128

change_rights

Изменение прав

256

read_own

Чтение собственных объектов

Пример:

В шаблоне страницы новостей для дилеров компании выводить новости только для авторизованных пользователей из группы ‘Дилеры’.

Для этого:

В администраторском интерфейсе в свойствах раздела дилерских новостей выставляем права для группы ‘Дилеры’ на чтение и чтение списка объектов. У остальных групп (кроме администраторов) все права должны быть выключены; В шаблоне дилерских новостей вывод документов оборачиваем командой:

<gp@mso@access_enabled>2

[вывод новостей]

</gp@mso@access_enabled>

<gp@mso@access_disabled>2

Данные новости доступны только для наших дилеров.

</gp@mso@access_disbled>

где 2 – код права на чтение списка объектов.

При обращении пользователя сайта к шаблону, команда <gp@mso@access_enabled>2 сравнит права его группы с параметром ‘2’ и в случае, если пользователь авторизован и принадлежит группе ‘Дилеров’, отработает код, содержащийся между соответствующими тегами (в нашем случае это вывод новостей).

В случае, если пользователь не авторизован или не принадлежит группе ‘Дилеры’, команда <gp@mso@access_disabled>2 выполнит свое содержимое (т. е. сообщение ‘Данные новости доступны только для наших дилеров’).

Кроме описанных команд, проверку прав пользователя на обращение к документам реализуют, также, и все стандартные команды и процедуры Optimizer, работающие со списком документов или их свойствами. Подробней описание команд Optimizer см. в разделе “Команды Optimizer”.