Задача № 36 071 от 10.06.2016 - СУ 2016: Разработка экспортной процедуры проверки и создания пользователя
Тихонов Герман Юрьевич Email tixonov@ssau.ru Мобильный телефон 8-927-687-65-61 Телефон 335-15-57
Необходимо создать:
1. Роль для гостевого доступа. Для пользователей только с данной ролью (указанная роль единственная, подключенная к пользователю) должно открываться окно с отображением html документа (текст документа в конце задачи).
Весь прочий интерфейс и функции конфигурации должны быть недоступны для пользователя.
2. Общий модуль с серверным исполнением.
Имя модуля "_ИМЦ_LDAP_СерверныеПроцедурыИФункции".
В составе модуля создать экспортную процедуру "ЗарегистрироватьПользователяLDAP(Логин, Пароль, ВыполненоУспешно)" (шаблон нужно скопировать в конце задачи).
В теле процедуры необходимо реализовать следующий алгоритм:
- процедура ищет среди списка пользователей пользователя с поступившем логином (параметр "Логин")
- если пользователь с требуемым логином найден:
пользователь делается актуальным и действующим (снимается пометка удаления, устанавливается галка "доступ разрешен", снимается галка "показывать в списке выбора")
пользователю присваивается требуемый пароль (параметр "Пароль")
- если пользователь с требуемым логином не найден:
создается пользователь с требуемым логином и паролем (параметры "Логин" и "Пароль")
пользователь делается актуальным и действующим (снимается пометка удаления, устанавливается галка "доступ разрешен", снимается галка "показывать в списке выбора")
пользователю присваивается роль для гостевого доступа (см. п.1)
если процедуры создания и обновления пользователя прошли успешно, значение параметра "ВыполненоУспешно" устанавливается в "Истина".
Текст HTML документа
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
<link href="http://ssau.ru/css/su_style.css" rel="stylesheet" type="text/css">
<meta content="http://ssau.ru/img/su/logo.png" property="og:image">
<title>Самарский университет</title>
</head>
<body>
<div class="namesu">
<div class="logo">
<br>
<img oncontextmenu="return false;" alt="Самарский университет имени ак. С.П. Королева" src="http://ssau.ru/img/su/logo2.svg"/>
</div>
<span>федеральное государственное автономное образовательное учреждение высшего образования</span>
«Самарский национальный исследовательский университет имени академика С.П. Королева»
</div>
<section class="main-news">
<br>
<p align="center"><b><font size=5px>Уважаемый пользователь,</p>
<p align="center">добро пожаловать в ##НаименованиеСистемы##!</font></b></p>
<br>
<p align="center">Если Вы читаете данное сообщение, значит для Вас не настроены права доступа к системе.</p>
<p align="center">Чтобы скорейшим образом разрешить эту несправедливость, пожалуйста, обратитесь в <a href="http://ssau.ru/it/uit/">Управление информатизации и телекоммуникаций</a></p>
</section>
</body>
</html>
__________________________________________________________________
* значение поля "##НаименованиеСистемы##" для систем:
- Документооборот - систему электронного документооборота
- Библиотека - модуль "Библиотека" системы управления университетом
- Управление университетом - модуль "Учебный процесс" системы управления университетом
Шаблон процедуры модуля
////////////////////////////////////////////////////////////////////////////////////////////////////
// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
//Выполняет регистрацию пользователя LDAP в Системе
//
//Входные параметры:
// - Логин, строка. Логин пользователя
// - Пароль, строка. Пароль пользователя
// - ВыполненоУспешно, булево. Признак успешного завершения
//
Процедура ЗарегистрироватьПользователяLDAP(Логин, Пароль, ВыполненоУспешно) Экспорт
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////////////////////////
// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
//Выполняет регистрацию пользователя LDAP в Системе
//
//Входные параметры:
// - Логин, строка. Логин пользователя
// - Пароль, строка. Пароль пользователя
// - ВыполненоУспешно, булево. Признак успешного завершения
Процедура ЗарегистрироватьПользователяLDAP(Логин, Пароль, ВыполненоУспешно, ТекстОшибки = "") Экспорт
ВыполненоУспешно = Ложь;
Если Не ЗначениеЗаполнено(Логин) Тогда
ТекстОшибки = "Поле ""Логин"" не заполнено!";
Возврат;
КонецЕсли;
Попытка
ПользовательЛДАП = Пользователи.НайтиПоИмени(Логин);
Если ПользовательЛДАП = Неопределено Тогда
ВыполненоУспешно = СоздатьПользователяЛДАП(Логин, Пароль, ТекстОшибки);
Иначе
Если ЗначениеЗаполнено(ПользовательЛДАП) Тогда
ПользовательОбъектЛДАП = ПользовательЛДАП.ПолучитьОбъект();
ПользовательОбъектЛДАП.Недействителен = Ложь;
ПользовательОбъектЛДАП.ПометкаУдаления = Ложь;
ПользовательОбъектЛДАП.Записать();
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(Логин);
Если ПользовательИБ = Неопределено Тогда
ТекстОшибки = "Произошла ошибка при обновлении данных пользователя: Пользователь ИБ не найден.";
Возврат;
КонецЕсли;
ПользовательИБ.ПоказыватьВСпискеВыбора = Ложь;
ПользовательИБ.Пароль = Пароль;
ПользовательИБ.АутентификацияСтандартная = Истина;
Если Не ПользовательИБ.Роли.Содержит(Метаданные.Роли._ИМЦ_LDAP_ВнешнийПользователь) Тогда
ПользовательИБ.Роли.Добавить(Метаданные.Роли._ИМЦ_LDAP_ВнешнийПользователь);
КонецЕсли;
ПользовательИБ.Записать();
КонецЕсли;
КонецЕсли;
Исключение
ТекстОшибки = ОписаниеОшибки();
Возврат;
КонецПопытки;
ВыполненоУспешно = Истина;
КонецПроцедуры
Функция СоздатьПользователяЛДАП(Логин, Пароль, ТекстОшибки) Экспорт
Попытка
СвойстваПользователя = Пользователи.НовоеОписаниеПользователяИБ();
СвойстваПользователя.Имя = Логин;
СвойстваПользователя.ПолноеИмя = Логин;
СвойстваПользователя.Пароль = Пароль;
СвойстваПользователя.АутентификацияСтандартная = Истина;
СвойстваПользователя.Роли = Новый Массив;
СвойстваПользователя.Роли.Добавить(Метаданные.Роли._ИМЦ_LDAP_ВнешнийПользователь.Имя);
СвойстваПользователя.Вставить("Действие", "Записать");
мПользователь = Справочники.Пользователи.СоздатьЭлемент();
мПользователь.Наименование = Логин;
мПользователь.Недействителен = Ложь;
мПользователь.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", СвойстваПользователя);
мПользователь.Записать();
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(мПользователь.ИдентификаторПользователяИБ);
Если Не ПользовательИБ.Роли.Содержит(Метаданные.Роли._ИМЦ_LDAP_ВнешнийПользователь) Тогда
ПользовательИБ.Роли.Добавить(Метаданные.Роли._ИМЦ_LDAP_ВнешнийПользователь);
КонецЕсли;
ПользовательИБ.Записать();
Исключение
ТекстОшибки = ОписаниеОшибки();
Возврат Ложь;
КонецПопытки;
Возврат Истина;
КонецФункции
Новая - 10 июня 2016 г. 15:04:06 - Пирожков -
</HTML>