Аутентификация пользователя в отчете
Два объекта 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) представляет текущий отчет.