Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Дополнительная аутентификация 1С предприятие ERP УФ

Дополнительная аутентификация 1С предприятие ERP УФ
Я
   Родом из детства
 
16.09.21 - 12:29
Всем здравствуйте. Задача следующая:
Имеется рабочее место(типо цеха). В нем работает бригада. В бригаде, помимо обычных сотрудников(чьих учеток нет в пользователях), имеется начальник бригады(а его учетка уже имеется). Там стоит один комп, с открытой обработкой. В ней они фиксируют произведенную продукцию. Обработка запускается третьим лицом(то есть есть пользователь, который открывает обработку для всех цехов). В ней есть кнопка, позволяющая менять состав бригады, однако, воспользоваться ей может только начальник бригады(а не какой-нибудь другой струдник). Пользователь хочет, чтобы по нажатию на кнопку появлялось окно аутентификации, куда бы начальник вводил свои данные аутентификации, и, в случае, если они верны, он мог менять состав. При этом, текущий пользователь бы не менялся.
То есть, по сути, мне нужно проверить - имеется ли пользователь с таким именем/паролем в базе. Но не могу понять, где храняться данные. И, может, уже есть что-то стандартное/готовое?
   ДенисЧ
 
1 - 16.09.21 - 12:35
Справочнки.Пользователи?
Да, вряд ли...
   Родом из детства
 
2 - 16.09.21 - 12:37
(1) Не нашел там пароля
   polosov
 
3 - 16.09.21 - 12:53
(0) ЗаблокироватьРаботуПользователя() ?
   ДенисЧ
 
4 - 16.09.21 - 12:54
(2) В допсвойства запиши.
   Родом из детства
 
5 - 16.09.21 - 12:54
(3) честно говоря не шарю за эту функцию, но, судя по названию, мужикам из бригады после такого мува придется снова звать человека, который запускает обработку
   polosov
 
6 - 16.09.21 - 12:57
(5) Тогда ПользователиИнформационнойБазу.ПолучитьПользователей() и далее смотри свои пароли
   Родом из детства
 
7 - 16.09.21 - 12:59
(6) хм, попробую, спасибо)
   polosov
 
8 - 16.09.21 - 13:00
(7) И связь со справочником через реквизит ИдентификаторПользователяИБ
   Родом из детства
 
9 - 16.09.21 - 13:01
(8) ок)
   Родом из детства
 
10 - 16.09.21 - 13:35
В общем, все вышло немного иначе
   Родом из детства
 
11 - 16.09.21 - 13:35
&НаКлиенте
Процедура ПроверитьПароль(Команда)
    Результат = ПроверитьТекущийПарольПользователя(Пользователь, Пароль);
    Сообщить(?(Результат,"Норм", "Это ошибка"));
КонецПроцедуры

Функция ПолучитьХешПароля(Пароль) Экспорт
    Хеш = Новый ХешированиеДанных(ХешФункция.SHA1);
    Хеш.Добавить(Пароль);
    Возврат Base64Строка(Хеш.ХешСумма);
КонецФункции

Функция ПроверитьТекущийПарольПользователя(Пользователь, Пароль, РегистроНезависимый=Истина) Экспорт
    
    ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Пользователь.ИдентификаторПользователяИБ);
    
    УстановитьПривилегированныйРежим(Истина);
    ХешТекущегоПароля = ПользовательИБ.СохраняемоеЗначениеПароля;
    УстановитьПривилегированныйРежим(Ложь);
    Если ХешТекущегоПароля = Пароль Тогда Возврат Истина КонецЕсли;// Пароль совпадает с СохраняемоеЗначениеПароля только в случае пустого значения

    ПозицияРазделителя = Найти(ХешТекущегоПароля, ",");
    Результат = Ложь;
    Если РегистроНезависимый Тогда
        Результат = ПолучитьХешПароля(ВРег(Пароль)) = Прав(ХешТекущегоПароля, СтрДлина(ХешТекущегоПароля) - ПозицияРазделителя);
    Иначе
        Результат = ПолучитьХешПароля(Пароль) = Лев(ХешТекущегоПароля, ПозицияРазделителя - 1);
    КонецЕсли;
    Возврат Результат;
    
КонецФункции

Функция ПолучитьСохраняемоеЗначение(Пароль) Экспорт
    Возврат ?(ЗначениеЗаполнено(Пароль),ПолучитьХешПароля(Пароль) + "," + ПолучитьХешПароля(ВРег(Пароль)),"");
КонецФункции

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.