Два объекта 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 должен быть подключен соответствующий просмотр данных. В свойстве
Теперь несколько слов о том, как подключить созданные объекты.
Вы можете организовать аутентификацию на двух уровнях — уровне проекта и уровне отчета. В обоих случаях используется свойство securityControl объекта проекта или отчета. В нем необходимо выбрать нужный объект аутентификации.
Однако это действие не сделает ваши отчеты сколько-нибудь защищеннее — все необходимые проверочные операции придется написать самому в исходном коде приложения Delphi. Единственное отличие в аутентификации по уровням в том, где именно вы сможете получить доступ к объекту аутентификации — из компонента проекта или отчета.
Для организации простейшей проверки имени пользователя и пароля на уровне проекта в приложении нужно написать примерно такой код:
rpReport.Open; if rpReport.ProjMan.SecurityControi.IsValidUser(
edUserName.Text, edPassword.Text}
then rpReport.Execute
else ShowMessage('Доступ запрещен');
rpReport.Close;
В данном случае доступ к объекту аутентификации SecurityControд (класс 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) представляет текущий отчет.