Иллюстрированный самоучитель по Delphi 7 для профессионалов

Аутентификация пользователя в отчете

Два объекта Rave Reports позволяют включить в проекте отчета механизм проверки имени пользователя и пароля. Это объекты Simple Security Controller (элемент simpleSecurity) и Data Lookup Security Controller (элемент LookupSecurity), которые доступны для выбора в диалоге создания объектов доступа к данным визуальной среды Rave Reports (см. рис. 24.4). Создается новый объект командой File › New Data Object главного меню Rave Reports. Созданный объект появляется в ветви Data View Dictionary дерева проекта.

Элемент SimpleSecurity предназначен для хранения списка пользователей и их паролей. Он имеет свойство userList, в котором в формате userName = Password заносятся имена и пароли пользователей.

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

Теперь несколько слов о том, как подключить созданные объекты.

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

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

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

rpReport.Open; if rpReport.ProjMan.SecurityControi.IsValidUser(
edUserName.Text, edPassword.Text)
then rpReport.Execute
else ShowMessage('Доступ запрещен');
rpReport.Close;

В данном случае доступ к объекту аутентификации SecurityControl (класс TRaveBaseSecurity) осуществляется через объект менеджера проекта projMan (класс TRaveProjectManager).

Метод:

function IsValidUser(AUserName: string;
APassword: string): Boolean;

…этого объекта возвращает значение True, если переданные в параметрах имя и пароль не совпадают со значениями из списка или базы данных.

Для уровня отчета код выглядит так:

rpReport.Open;
if rpReport.ProjMan.ActiveReport.
SecurityControl.IsValidUser(
edUserName.Text, edPassword.Text)
then rpReport.Execute
else ShowMessage('Доступ запрещен');
rpReport.Close;

Здесь объект ActiveReport (класс TRaveReport) представляет текущий отчет.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.