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