Проверить описание пользователя. Проверяет корректность заполнения структуры описания пользователя ИБ.
// Проверяет корректность заполнения структуры описания пользователя ИБ.
// В случае нахождения ошибок устанавливает параметр Отказ в Истина и
// отправляет сообщения об ошибках.
//
// Параметры:
// ОписаниеПользователяИБ - Структура - описание пользователя ИБ
// заполнение которого требуется проверить.
//
// Отказ - Булево - флаг отказа от выполнения операции.
// Устанавливается в случае ошибки.
//
// ЭтоВнешнийПользователь - Булево - Истина если проверяется описание
// пользователя ИБ для внешнего пользователя.
//
// Возвращаемое значение:
// Булево - если Истина, ошибок не найдено.
//
Функция ПроверитьОписаниеПользователяИБ(Знач ОписаниеПользователяИБ, Отказ, ЭтоВнешнийПользователь) Экспорт
Если ОписаниеПользователяИБ.Свойство("Имя") Тогда
Имя = ОписаниеПользователяИБ.Имя;
Если ПустаяСтрока(Имя) Тогда
// Хранилище настроек использует только первые 64 символа имени пользователя ИБ.
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Не заполнено Имя (для входа).'"),
,
"Имя",
,
Отказ);
ИначеЕсли СтрДлина(Имя) > 64 Тогда
// Аутентификация через web использует символ ":",
// как разделитель имени и пароля пользователя.
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Имя (для входа) превышает 64 символа.'"),
,
"Имя",
,
Отказ);
ИначеЕсли СтрНайти(Имя, ":") > 0 Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Имя (для входа) содержит запрещенный символ "":"".'"),
,
"Имя",
,
Отказ);
Иначе
УстановитьПривилегированныйРежим(Истина);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Имя);
УстановитьПривилегированныйРежим(Ложь);
Если ПользовательИБ <> Неопределено
И ПользовательИБ.УникальныйИдентификатор
<> ОписаниеПользователяИБ.ИдентификаторПользователяИБ Тогда
НайденныйПользователь = Неопределено;
ПользовательПоИдентификаторуСуществует(
ПользовательИБ.УникальныйИдентификатор, , НайденныйПользователь);
Если НайденныйПользователь = Неопределено
ИЛИ НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
ТекстОшибки = НСтр("ru = 'Имя (для входа) уже занято.'");
Иначе
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Имя (для входа) уже занято для пользователя ""%1"".'"),
Строка(НайденныйПользователь));
КонецЕсли;
ОбщегоНазначения.СообщитьПользователю(
ТекстОшибки, , "Имя", , Отказ);
ИначеЕсли Не ОписаниеПользователяИБ.Свойство("Пароль")
Или Не ЗначениеЗаполнено(ОписаниеПользователяИБ.Пароль) Тогда
Если ЭтоВнешнийПользователь Тогда
НастройкиВхода = ПользователиСлужебныйПовтИсп.Настройки().ВнешниеПользователи;
Иначе
НастройкиВхода = ПользователиСлужебныйПовтИсп.Настройки().Пользователи;
КонецЕсли;
Если ЗначениеЗаполнено(НастройкиВхода.МинимальнаяДлинаПароля) Тогда
Если ЗначениеЗаполнено(ОписаниеПользователяИБ.ИдентификаторПользователяИБ) Тогда
УстановитьПривилегированныйРежим(Истина);
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(
ОписаниеПользователяИБ.ИдентификаторПользователяИБ);
УстановитьПривилегированныйРежим(Ложь);
Иначе
ПользовательИБ = Неопределено;
КонецЕсли;
Если ПользовательИБ = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Требуется установить пароль.'"),, "СменитьПароль",, Отказ);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если ОписаниеПользователяИБ.Свойство("ПользовательОС") Тогда
Если Не ПустаяСтрока(ОписаниеПользователяИБ.ПользовательОС)
И Не СтандартныеПодсистемыСервер.ЭтоУчебнаяПлатформа() Тогда
УстановитьПривилегированныйРежим(Истина);
Попытка
ПользовательИБ = ПользователиИнформационнойБазы.СоздатьПользователя();
ПользовательИБ.ПользовательОС = ОписаниеПользователяИБ.ПользовательОС;
Исключение
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Пользователь ОС должен быть в формате
|""\\ИмяДомена\ИмяПользователя"".'"),
,
"ПользовательОС",
,
Отказ);
КонецПопытки;
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
КонецЕсли;
Возврат НЕ Отказ;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ОписаниеТипаСостоитИзТипа (БСП)
НовоеОписаниеПользователяИБ (БСП)
ПоказатьОписаниеИзмененийСистемы (БСП)
Проверить что переменная соответствует заданному типу
ПроверитьТекущиеНапоминания (БСП)
ПроверитьПраваТекущегоПользователяПриВходе (БСП)
ВключитьЗаданиеКонтрольАктивностиПользователейПриНеобходимости (БСП)
УстановитьФлагОтображенияОписанийДляНовогоПользователя (БСП)