Авторизация пользователей из внешних систем: различия между версиями

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску
(Новая страница: «Category:Функции Category:Интеграция Система Nemo позволяет обращаться к ней как базе пользова...»)
 
 
(не показано 12 промежуточных версий 3 участников)
Строка 1: Строка 1:
[[Category:Функции]] [[Category:Интеграция]]
+
[[Category:Функции]]
 +
[[Category:Интеграция]]
 +
Система {{NameSystemLink}} позволяет обращаться к ней как базе пользователей для авторизации из других систем (например, с форума на сайте, собственного ПО компании и т.п).
  
Система Nemo позволяет обращаться к ней как базе пользователей для авторизации из других систем (например форума на сайте, собственного ПО компании и т.п)
+
Для этого необходимо на адрес вида <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">https://domain/api__external_authorization</syntaxhighlight> отправить POST-запрос в стандартном формате ответа об авторизуемом пользователе. При получении запроса система {{NameSystem}} обрабатывает полученные данные, авторизует пользователя и перенаправляет пользователя на страницу поиска авиабилетов. В случае неудачной авторизации, у пользователя появится возможность стандартной авторизации по номеру телефона.
  
Для этого нужно подключиться к веб-службе авторизации, WSDL-описание которой располагается по адресу:
+
=== Запрос передачи авторизуемого пользователя ===
 +
Системе {{NameSystem}} можно передать информацию об авторизованном во внешней системе пользователе путем отправки на URL <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">https://domain/api__external_authorization</syntaxhighlight> POST-запроса в следующем формате:
  
[http://hostname/authorization_reol.wsdl http://hostname/authorization_reol.wsdl]
+
* POST — параметр
 +
* Пример значения параметра:
  
<pre>?xml version ='1.0' encoding ='UTF-8' ?>
+
<pre>
 +
{
 +
 
 +
"user": {
 +
"id": 12,
 +
"email": "test@test.ru",
 +
"phone": "79123456789",
 +
"firstName": "Konstantin",
 +
"lastName": "Konstantinov",
 +
"middleName": "Konstantinovich",
 +
"birthDate": "1990-11-15",
 +
"nationality": "RU",
 +
"gender": "F",
 +
"docNumber": "6522232232",
 +
"loyaltyNumber": "1231233213223"
 +
},
 +
"passengers": [{
 +
"id": 433,
 +
"firstName": "Alexander",
 +
"lastName": "Alexandrov",
 +
"middleName": "Alexandrovich",
 +
"birthDate": "1990-10-05",
 +
"nationality": "RU",
 +
"gender": "M",
 +
"docNumber": "7844454454",
 +
"loyaltyNumber": "1231223213223"
 +
}],
 +
"restrictions": {"directionType": "OW"},
 +
"orderId": "630890"
 +
}</pre>
 +
 
 +
<!--> <pre>?xml version ='1.0' encoding ='UTF-8' ?>
 
<definitions name='Authorization'
 
<definitions name='Authorization'
 
  targetNamespace='http://example.org/Authorization'
 
  targetNamespace='http://example.org/Authorization'
Строка 56: Строка 91:
 
  </port>
 
  </port>
 
</service>
 
</service>
</definitions></pre>
+
</definitions></pre> </!-->
 +
 
 +
* <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">directionType</syntaxhighlight> не является обязательным полем и означает допустимый тип перелета (если указан параметр OW, то пользователю доступны для бронирования только OW-перелеты).
 +
* <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">orderId</syntaxhighlight> — номер заказа, который сделан анонимом. Данный параметр(необязательный) привяжет созданный заказ к авторизованному пользователю и сделает его владельцем, чтобы можно было далее с этими данными работать.
 +
* Пример расчета hash на языке PHP:
 +
 
 +
<pre>$hash = hash('sha256', $request . $salt);</pre>
 +
 
 +
<syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">$request</syntaxhighlight> — значение POST-параметра из запроса, <syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">$salt</syntaxhighlight> — секретная строка, известная только получателю и отправителю.
 +
 
 +
В настройках {{NameSystem}} должна быть включена возможность авторизации во внешней системе и задана секретная строка.
 +
 
 +
Секретное слово для генерации хеша будет отдельно выдано специалистами технической поддержки.
 +
 
 +
== Особенности авторизации из внешних систем ==
 +
 
 +
* Привязка пользователей идет по домену. Если необходимо добавить пользователей в корневое агентство, то запросы будут идти на домен:
 +
<syntaxhighlight lang="text" enclose="none" style="font-size: 1.2em; padding: 0 3px; background: #F0F0F0; border: 1px dashed #2F6FAB;">https://domain/tests/nsa/frame.php</syntaxhighlight>.
 +
 
 +
Если же нужно авторизовать пользователей для субагента, то необходимо прописать данному субагенту домен в настройках: '''Управление сайтом''' → '''Домены и протоколы'''
 +
в поле {{Setting|Доменное имя сайта для загрузки настроек}}.
 +
* Чтобы после авторизации пользователя перенаправлять его не на страницу поиска, а на любую другую выбранную страницу, необходимо указать в json после хеша домен перенаправления.
 +
* Авторизация пользователя происходит по его ID. Для добавления нового пользователя, которого нет в системе {{NameSystem}}, нужно также указать его ID.
 +
* Если данные пользователя переданы частично, они останутся без изменений до передачи новых данных.
 +
* Если часть данных данных отличается от имеющихся в системе {{NameSystem}}, то они перезапишутся.
 +
* Если необходимо ограничить изменения пассажиров (туристов), подтянутых при авторизации, в разделе '''Управление продажами''' → '''Авиабилеты''' → '''Процессы''' → '''Форма бронирования''' можно включить настройку {{Setting|Режим работы: сотрудники авиакомпании}}. Если настройка включена и в процессе оформления заказа пользователь изменит ФИО или дату рождения подтянутого пассажира, то при попытке забронировать заказ пользователь получит ошибку «Разрешено бронирование пассажиров только из списка туристов».
 +
 
 +
== См. также ==
 +
* [[Авторизация]]
 +
* [[Пользователь]]

Текущая версия на 20:07, 13 марта 2024

Система Nemo.travel позволяет обращаться к ней как базе пользователей для авторизации из других систем (например, с форума на сайте, собственного ПО компании и т.п).

Для этого необходимо на адрес вида https://domain/api__external_authorization отправить POST-запрос в стандартном формате ответа об авторизуемом пользователе. При получении запроса система Nemo.Travel обрабатывает полученные данные, авторизует пользователя и перенаправляет пользователя на страницу поиска авиабилетов. В случае неудачной авторизации, у пользователя появится возможность стандартной авторизации по номеру телефона.

Запрос передачи авторизуемого пользователя

Системе Nemo.Travel можно передать информацию об авторизованном во внешней системе пользователе путем отправки на URL https://domain/api__external_authorization POST-запроса в следующем формате:

  • POST — параметр
  • Пример значения параметра:
{

"user": {
"id": 12,
"email": "test@test.ru",
"phone": "79123456789",
"firstName": "Konstantin",
"lastName": "Konstantinov",
"middleName": "Konstantinovich",
"birthDate": "1990-11-15",
"nationality": "RU",
"gender": "F",
"docNumber": "6522232232",
"loyaltyNumber": "1231233213223"
},
"passengers": [{
"id": 433,
"firstName": "Alexander",
"lastName": "Alexandrov",
"middleName": "Alexandrovich",
"birthDate": "1990-10-05",
"nationality": "RU",
"gender": "M",
"docNumber": "7844454454",
"loyaltyNumber": "1231223213223"
}],
"restrictions": {"directionType": "OW"},
"orderId": "630890"
}


  • directionType не является обязательным полем и означает допустимый тип перелета (если указан параметр OW, то пользователю доступны для бронирования только OW-перелеты).
  • orderId — номер заказа, который сделан анонимом. Данный параметр(необязательный) привяжет созданный заказ к авторизованному пользователю и сделает его владельцем, чтобы можно было далее с этими данными работать.
  • Пример расчета hash на языке PHP:
$hash = hash('sha256', $request . $salt);

$request — значение POST-параметра из запроса, $salt — секретная строка, известная только получателю и отправителю.

В настройках Nemo.Travel должна быть включена возможность авторизации во внешней системе и задана секретная строка.

Секретное слово для генерации хеша будет отдельно выдано специалистами технической поддержки.

Особенности авторизации из внешних систем

  • Привязка пользователей идет по домену. Если необходимо добавить пользователей в корневое агентство, то запросы будут идти на домен:

https://domain/tests/nsa/frame.php.

Если же нужно авторизовать пользователей для субагента, то необходимо прописать данному субагенту домен в настройках: Управление сайтомДомены и протоколы в поле Доменное имя сайта для загрузки настроек.

  • Чтобы после авторизации пользователя перенаправлять его не на страницу поиска, а на любую другую выбранную страницу, необходимо указать в json после хеша домен перенаправления.
  • Авторизация пользователя происходит по его ID. Для добавления нового пользователя, которого нет в системе Nemo.Travel, нужно также указать его ID.
  • Если данные пользователя переданы частично, они останутся без изменений до передачи новых данных.
  • Если часть данных данных отличается от имеющихся в системе Nemo.Travel, то они перезапишутся.
  • Если необходимо ограничить изменения пассажиров (туристов), подтянутых при авторизации, в разделе Управление продажамиАвиабилетыПроцессыФорма бронирования можно включить настройку Режим работы: сотрудники авиакомпании. Если настройка включена и в процессе оформления заказа пользователь изменит ФИО или дату рождения подтянутого пассажира, то при попытке забронировать заказ пользователь получит ошибку «Разрешено бронирование пассажиров только из списка туристов».

См. также