4.2.4. Форма Password – изменение пароля

 

В правилах разграничения доступа (ПРД), действующих на предприятии или в организации должен быть указан срок действия пароля пользователя. По истечении этого срока программный комплекс должен предложить работнику сменить пароль (смотри событие 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