АвторизоватьТекущегоПользователя (БСП)

Автор: 1С
ОбщийМодуль.ПользователиСлужебный
БСП

Авторизовать текущего пользователя. Вызывается при начале работы системы, чтобы проверить возможность выполнения авторизации и

// Вызывается при начале работы системы, чтобы проверить возможность выполнения авторизации и
// вызвать заполнение значений параметров сеанса ТекущийПользователь и ТекущийВнешнийПользователь.
// Также вызывается при входе в область данных.
//
// Возвращаемое значение:
//  Строка - пустая строка   - авторизация выполнена успешно.
//           Непустая строка - описание ошибки.
//                             При начале работы системы следует
//                             завершить работу 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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

АвторизованныйПользователь (БСП)

АвторизоватьНаСайтеПоддержкиПользователей (БСП)

ТекущийПользователь (БСП)

ТекущийВнешнийПользователь (БСП)

1С Менеджер конфигураций