Задача № 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>