Функция RassvetAuthorizationSMSGet(Запрос)
Ответ = Новый HTTPСервисОтвет(200);
НомерТелефона = Запрос.ПараметрыURL.Получить("НомерТелефона");
КодСтраны = "";
Для Каждого ТекПараметр ИЗ Запрос.ПараметрыЗапроса Цикл
Если ВРег(ТекПараметр.Ключ) = ВРег("CountryCode") Тогда
КодСтраны = ТекПараметр.Значение;
КонецЕсли;
КонецЦикла;
Если НЕ ЗначениеЗаполнено(КодСтраны) Тогда
КодСтраны = "7";
КонецЕсли;
СтруктураВозврата = НайтиПользователяПоНомеруТелефона(КодСтраны, НомерТелефона);
Если СтруктураВозврата.Пользователь = Неопределено Тогда
Ответ.КодСостояния = 405;
Результат = СтруктураВозврата.Ошибка;
Иначе
ОшибкаДоступаКПриложению = ПроверитьДоступПользователяПоМобильномуПриложению(СтруктураВозврата.Пользователь);
Если ЗначениеЗаполнено(ОшибкаДоступаКПриложению) Тогда
Ответ.КодСостояния = 405;
Результат = ОшибкаДоступаКПриложению;
Иначе
СтруктураВозвратаОтправкиСМС = ОтправитьСообщениеПоСМС(СтруктураВозврата.Логин, СтруктураВозврата.Пароль, КодСтраны, НомерТелефона);
Если СтруктураВозвратаОтправкиСМС.Ошибка Тогда
Ответ.КодСостояния = 405;
КонецЕсли;
Результат = СтруктураВозвратаОтправкиСМС.ТекстСообщения;
КонецЕсли;
КонецЕсли;
Ответ.УстановитьТелоИзСтроки(Результат, КодировкаТекста.UTF8);
Возврат Ответ;
КонецФункции
Функция НайтиПользователяПоНомеруТелефона(КодСтраны, НомерТелефона)
УстановитьПривилегированныйРежим(Истина);
СтруктураВозврата = Новый Структура("Пользователь, Логин, Пароль, Ошибка");
// Здесь код поиска пользователя по номеру телефона. У каждой конфигурации поиск свой
Возврат СтруктураВозврата;
КонецФункции
Функция ПроверитьДоступПользователяПоМобильномуПриложению(Пользователь, МобильноеПриложение) Экспорт
УстановитьПривилегированныйРежим(Истина);
ФизическоеЛицо = Пользователь.ФизЛицо;
Если НЕ ЗначениеЗаполнено(ФизическоеЛицо) Тогда
Возврат "У пользователя не указано Физическое лицо. Обратитесь к руководителю.";
КонецЕсли;
//Здесь код проверки доступа пользователя. У каждой конфигурации своя проверка
Возврат "";
КонецФункции
Функция ОтправитьСообщениеПоСМС(Логин, Пароль, КодСтраны, НомерТелефона)
СтруктураВозврата = Новый Структура("Ошибка, ТекстСообщения");
УстановитьПривилегированныйРежим(Истина);
ГСЧ = Новый ГенераторСлучайныхЧисел(ТекущаяУниверсальнаяДатаВМиллисекундах());
СлучайнаяСтрока = "";
СлучайнаяСтрока = СлучайнаяСтрока + Формат(ГСЧ.СлучайноеЧисло(1,9), "ЧГ=");
СлучайнаяСтрока = СлучайнаяСтрока + Формат(ГСЧ.СлучайноеЧисло(0,9), "ЧГ=");
СлучайнаяСтрока = СлучайнаяСтрока + Формат(ГСЧ.СлучайноеЧисло(0,9), "ЧГ=");
СлучайнаяСтрока = СлучайнаяСтрока + Формат(ГСЧ.СлучайноеЧисло(0,9), "ЧГ=");
СлучайноеЧисло = Число(СлучайнаяСтрока);
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
Данные = Новый Структура("Code, Login, Pass", СлучайноеЧисло, Логин, Пароль);
ЗаписатьJSON(ЗаписьJSON, Данные, Новый НастройкиСериализацииJSON);
СтруктураПароля = ЗаписьJSON.Закрыть();
ТекстСМС = "Код авторизации: " + СлучайнаяСтрока;
МассивПолучателей = Новый Массив();
МассивПолучателей.Добавить("+" + КодСтраны + НомерТелефона);
Результат = ОтправкаSMS.ОтправитьSMS(МассивПолучателей, ТекстСМС, "Рассвет", Ложь); //Функция БСП
Если ЗначениеЗаполнено(Результат.ОписаниеОшибки) Тогда
СтруктураВозврата.Ошибка = Истина;
СтруктураВозврата.ТекстСообщения = Результат.ОписаниеОшибки;
Иначе
СтруктураВозврата.Ошибка = Ложь;
СтруктураВозврата.ТекстСообщения = СтруктураПароля;
КонецЕсли;
Возврат СтруктураВозврата;
КонецФункции
0 Комментариев