В правилах разграничения доступа (ПРД), действующих на предприятии или
в организации должен быть указан срок действия пароля пользователя. По истечении
этого срока программный комплекс должен предложить работнику сменить пароль
(смотри событие Click кнопки Вход формы Login). Для этих целей создадим форму Password. Она также может быть запущена работником на выполнение раньше истечения контрольного
срока (пункт меню Поддержка – Смена пароля).
Форма Password показана
на рис. 4.15. В окне свойств формы представлены только измененные свойства.
Остальные для наглядности удалены.
Добавим код, который будет запушен на
выполнение при наступлении события Load формы Password:
* Назначение индексного файла для
поиска
SELECT USER
SET ORDER TO TAG LastName
* Поиск в таблице User учетной записи работника
SEEK FAMILY
Код события Init формы Password имеет
вид:
* Временные переменные
PRIVATE Old,New1,New2
* Начальное значение старого
пароля и двух значений
*
нового пароля
STORE
[ ] TO Old,New1,New2
Код события Click кнопки Записать
имеет вид:
* Создание переменных памяти
SCATTER MEMVAR
* Сравнение по полному
соответствию
SET
EXACT ON
IF
UnKod(M.PassWord)#ALLTRIM(Old)
=MESSAGEBOX('Неправильно введен старый пароль
',;
48,'Ошибка!')
SET EXACT OFF
* Сделать активным поле Старый пароль
THISFORM.TEXT1.SetFocus
RETURN
ENDIF
SET
EXACT OFF
* Удаление концевых пробелов в
значениях пароля
New1=ALLTRIM(New1)
New2=ALLTRIM(New2)
SET
EXACT ON
IF
New1#New2
=MESSAGEBOX('Два значения нового пароля не совпадают ',;
48,'Ошибка!')
SET EXACT OFF
THISFORM.TEXT2.SetFocus
RETURN
ENDIF
SET
EXACT OFF
IF LEN(New1)<=4
=MESSAGEBOX('Длина нового пароля должна быть '+;
' не менее 5 символов
',48,'Ошибка!')
* Сделать активным поле Новый пароль
THISFORM.TEXT2.SetFocus
RETURN
ENDIF
New3=CrKod(New1) && Зашифрованный новый пароль
SET
EXACT ON
IF
ALLTRIM(New3)=ALLTRIM(M.PassWord)
=MESSAGEBOX('Новый и старый пароль совпадают ',;
48,'Ошибка!')
SET EXACT OFF
* Сделать активным поле Старый пароль
THISFORM.TEXT2.SetFocus
RETURN
ENDIF
SET
EXACT OFF
M.PassWord=New3 && Зашифрованный новый пароль
M.Inspector=FAMILY && Фамилия изменившего
пароль
M.Date_Up=Date() && Дата изменения пароля
M.Time_Up=Time() && Время изменения пароля
* Сброс значений переменных
памяти в поля записи
GATHER
MEMVAR
*
Закрытие формы
THISFORM.Release