Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Раскрыть
titleСервер. Формирование одноразового кода и отправка его Пользователю
Блок кода
languagehtmlxml
Функция 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(МассивПолучателей, ТекстСМС, "Рассвет", Ложь); //Функция БСП
	Если ЗначениеЗаполнено(Результат.ОписаниеОшибки) Тогда
		СтруктураВозврата.Ошибка = Истина;
		СтруктураВозврата.ТекстСообщения = Результат.ОписаниеОшибки;
	Иначе
	    СтруктураВозврата.Ошибка = Ложь;
		СтруктураВозврата.ТекстСообщения = СтруктураПароля;
	КонецЕсли;
	Возврат СтруктураВозврата;
КонецФункции
Раскрыть
titleМобильное приложение. Проверка одноразового кода и отправка уведомления об авторизации на сервер
Блок кода
Раскрыть
titleСервер. Регистрация начальных данных на узле авторизованного пользователя
Блок кода

Aura divider
paramsJTdCJTIydHlwZSUyMiUzQSUyMnRleHQlMjIlMkMlMjJzZXJpYWxpemVkU3R5bGVzJTIyJTNBJTIyJTdCJTVDJTIyYWxpZ25tZW50JTVDJTIyJTNBJTdCJTVDJTIyaG9yaXpvbnRhbCU1QyUyMiUzQSU1QyUyMmNlbnRlciU1QyUyMiU3RCUyQyU1QyUyMmljb24lNUMlMjIlM0ElN0IlNUMlMjJuYW1lJTVDJTIyJTNBJTVDJTIyZmFQYXBlclBsYW5lJTVDJTIyJTJDJTVDJTIyY29sb3IlNUMlMjIlM0ElNUMlMjIlMjMzMzMlNUMlMjIlMkMlNUMlMjJzaXplJTVDJTIyJTNBMjQlN0QlMkMlNUMlMjJ0ZXh0JTVDJTIyJTNBJTdCJTVDJTIyY29sb3IlNUMlMjIlM0ElNUMlMjIlMjNjNjE2MTYlNUMlMjIlMkMlNUMlMjJmb250U2l6ZSU1QyUyMiUzQTMyJTJDJTVDJTIydGV4dEFsaWduJTVDJTIyJTNBJTVDJTIybGVmdCU1QyUyMiUyQyU1QyUyMmZvbnRXZWlnaHQlNUMlMjIlM0ElNUMlMjJib2xkJTVDJTIyJTJDJTVDJTIydGV4dCU1QyUyMiUzQSU1QyUyMiVEMCU5RiVEMCVCRSVEMCVCQiVEMCVCNSVEMCVCNyVEMCVCRCVEMSU4QiVEMCVCNSUyMCVEMSU4MSVEMSU4MSVEMSU4QiVEMCVCQiVEMCVCQSVEMCVCOCU1QyUyMiU3RCUyQyU1QyUyMmJvcmRlciU1QyUyMiUzQSU3QiU1QyUyMnRvcCU1QyUyMiUzQWZhbHNlJTJDJTVDJTIycmlnaHQlNUMlMjIlM0FmYWxzZSUyQyU1QyUyMmJvdHRvbSU1QyUyMiUzQXRydWUlMkMlNUMlMjJsZWZ0JTVDJTIyJTNBZmFsc2UlMkMlNUMlMjJjb2xvciU1QyUyMiUzQSU1QyUyMiUyM2NkMGQwZCU1QyUyMiUyQyU1QyUyMnN0eWxlJTVDJTIyJTNBJTVDJTIyc29saWQlNUMlMjIlMkMlNUMlMjJ3aWR0aCU1QyUyMiUzQTIlN0QlMkMlNUMlMjJzaXplJTVDJTIyJTNBJTdCJTdEJTdEJTIyJTdE

...