UserCredentialsLoad

From SunFlurry wiki
Revision as of 12:42, 3 January 2024 by Admin (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
  UserCredentialsLoad (Административные функции)
Объект:Функции общего назначения
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Сервер
Исключения:Недостаточно прав, файловый сервер, ошибка сервера.
Визуальность:Нет

Функция получает строку-содежимое файла учетных записей пользователей с сервера. Для исполнения функции необходимо наличие административных прав. Строку можно использовать, к примеру, для заполнения объекта ini-файла. Чтение учетных записей пользователей, без их предвариельной блокировки функцией UserCredentialsLock, разрешено, однако если данные будут изменяться, необходимо убедиться, что вы читаете актуальную копию данных, поэтому необходимо использование UserCredentialsLock до начала чтения.

Файл имеет структуру Ini-файла. Установки учетной записи каждого из пользователей следуют в своей ветке. В каждой из веток могут содержаться следующие переменные (не исключено, что каких-то из переменых не будет, либо могут присутствовать неописанные здесь переменные): Password (только в режиме хранения открытых текстов паролей), PasswordHash (MD5 хеш, только в режиме хранения хешей), ifDisabled (запрет доступа пользователя), ifAdministrator (уровень полномочий), ifProtected (защита от проверки пароля с помощью NTLM), FirstLogon (дата и время первого входа в формате Int64 Windows), LastLogon (дата и время последнего входа в формате Int64 Windows), DisableNotice (сообщение о причине блокировки).

Для допонительной информации см. статью Установки сервера.

Синтаксис

UserCredentialsLoad():<Файл учетных записей сервера в виде строки (STRING)>

Возвращаемое значение

Возвращает строку-содержимое файла учетных записей, если это сделать невозможно, функция вызовет исключение.

Примеры

//Фрагмент блокирует доступ пользователя Нарушитель2" к серверу базы данных.
бПольз:="Нарушитель2";

аПольз:="";
аМаш:="";
аВремя:=0;
If not UserCredentialsLock(аПольз,аМаш,аВремя) Then
  Message("Учетные записи заблокированы администратором "+аПольз+" на компьютере "+аМаш+" в "+FormatDate(аВремя,"DD.mm.YYYY hh:tt:ss")+"!","!");
  Exit;
EndIf;
Try
  Стр:=UserCredentialsLoad;
  //Загрузка файла учетных записей в объект Ini-файла
  aIni:=Ini.Create();
  If aIni.AddFromString(Стр) Then
    If not aIni.DoesExist(бПольз+"\") Then
      Message("Пользователь "+бПольз+" не зарегистрирован на сервере!","!");
    ElseIf Number(aIni.GetData(бПольз+"\ifDisabled","0"))<>0 Then
      Message("Пользователь "+бПольз+" уже был заблокирован!","I");
    Else
      //Добавим или обновим переменную ifDisabled. 
      aIni.AddLeaf(бПольз+"\ifDisabled","1");
      Стр:=aIni.StoreToString("");
      //Удалить все комментарии (необязательный шаг)
      Стр:=ReplaceRE(Стр,"^;.*\R","");
      //Сохраним результат на сервере
      If UserCredentialsStore(Стр) Then
        Message("Пользователь "+бПольз+" был успешно заблокирован!","I");
      Else
        Message("Ошибка сохранения учетных записей пользователей!","!");
      EndIf;
    EndIf;
  EndIf;
Finally
  UserCredentialsUnlock();
EndTry;