На этом шаге мы рассмотрим компонент TDBSecurity.
Компонент предоставляет два диалога, которые являются общеупотребимыми для приложений, работающих с базами данных. Первый - диалог входа в программу с регистрацией пользователя (проверкой пароля, прав и т.д.) и открытием БД. Второй - диалог смены пароля пользователя. Компонент также может заблокировать ваше приложение, минимизировав его, и потребовать от пользователя пароль для его разблокировки.
Компонент обеспечивает три диалога:
Установите свойства Database, UsersTableName и LoginNameField, а также напишите обработку события OnCheckUser (при необходимости) для появления диалога регистрации при загрузке вашего приложения. Если свойства UsersTableName и LoginNameField не заданы, то в таком виде компонент можно использовать при соединении с SQL-сервером, который сам обеспечивает проверку прав пользователя.
Вызовите метод ChangePassword для предоставления пользователю возможности сменить его пароль.
Свойство | Описание |
---|---|
property UsersTableName: TFileName; | Задает имя таблицы в БД Database, которая содержит информацию о пользователях. Поле LoginNameField в этой таблице должно содержать входные имена или идентификаторы пользователей, по которым их можно идентифицировать. |
property LoginNameField: string; | Определяет имя поля в таблице с именем UsersTableName из БД Database, используемое для идентификации пользователя по введенному имени. |
property OnCheckUser: TCheckUserEvent; | Событие для проверки прав пользователя. К моменту вызова этого события пользователь уже найден в таблице UsersTableName по введенному им имени и полю LoginNameField, то есть таблица UsersTable позиционирована на нужную запись. Остается прочитать нужные поля и сделать вывод о результатах проверки, не забыв вернуть нужное логическое значение. Можно также сохранить где-нибудь необходимую информацию о текущем пользователе. Событие вызывается и в том случае, если таблица UsersTableName не задана. В обработчике события OnCheckUser вы можете использовать значение свойства LoggedUser, которое содержит имя пользователя, введенное им в диалоге регистрации. |
function ChangePassword: Boolean; | Вызывает диалог "Смена пароля". Важно правильно обработать событие OnChangePassword. Вы должны самостоятельно произвести в том событии все необходимые действия для смены пароля пользователя в базе данных. Например, вы можете выполнить соответствующий SQL-оператор или сделать необходимые изменения в таблицах БД. |
property OnChangePassword: TChangePasswordEvent; | Событие для смены пароля. К этому моменту проверено, что оба новых пароля совпадают, а UsersTable позиционирована на запись с текущим пользователем. Нужно проверить, что введенный старый пароль валиден и произвести изменения в таблице. |
property Database: TDatabase; | Указывает на компонент TDatabase, задающий БД, который, возможно, содержит таблицу UsersTableName с именами, паролями, правами и другой необходимой информацией о пользователях. |
procedure Lock; | Метод предназначен для "блокирования" приложения. При вызове метода Lock приложение минимизируется и при попытке восстановления его размеров выводит диалог ввода пароля. Вы можете обработать введенный пользователем пароль в событии OnUnlock. |
property OnUnlock: TCheckUnlockEvent; | Событие вызывается для проверки введенного пользователем пароля при разблокировании приложения, предварительно заблокированного методом Lock. Вы должны вернуть False из вашего обработчика события OnUnlock для того, чтобы запретить разблокирование приложения. |
type TCheckUnlockEvent = function(const Password: string): Boolean of object; | Тип определен для события OnUnlock компонента TDBSecurity. |
type TChangePasswordEvent = function(UsersTable: TTable; const OldPassword, NewPassword: string): Boolean of object; | Тип определен для события OnChangePassword компонента TDBSecurity. |
На следующем шаге мы рассмотрим компонент TBDEItems.