Авторизация пользователей из внешних систем: различия между версиями
Строка 1: | Строка 1: | ||
− | [[Category:Функции]] [[Category:Интеграция]] | + | [[Category:Функции]] |
− | Система | + | [[Category:Интеграция]] |
+ | Система {{NameSystemLink}} позволяет обращаться к ней как базе пользователей для авторизации из других систем (например, с форума на сайте, собственного ПО компании и т.п). | ||
− | Для этого | + | Для этого необходимо на адрес вида <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}} обрабатывает полученные данные, авторизует пользователя и перенаправляет пользователя на страницу поиска авиабилетов. В случае неудачной авторизации, у пользователя появится возможность стандартной авторизации по номеру телефона. |
− | + | === Запрос передачи авторизуемого пользователя === | |
− | + | Системе {{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-запроса в следующем формате: | |
− | Запрос передачи авторизуемого пользователя | ||
− | Системе | ||
− | |||
− | |||
+ | * POST — параметр | ||
* Пример значения параметра: | * Пример значения параметра: | ||
− | <pre> | + | <pre> |
− | |||
{ | { | ||
Строка 96: | Строка 93: | ||
</definitions></pre> </!--> | </definitions></pre> </!--> | ||
− | * directionType не является обязательным полем и означает допустимый тип перелета (если указан параметр OW, то пользователю доступны для бронирования только OW-перелеты). | + | * <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: | * Пример расчета hash на языке PHP: | ||
<pre>$hash = hash('sha256', $request . $salt);</pre> | <pre>$hash = hash('sha256', $request . $salt);</pre> | ||
− | $request | + | <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 после хеша домен перенаправления. | * Чтобы после авторизации пользователя перенаправлять его не на страницу поиска, а на любую другую выбранную страницу, необходимо указать в json после хеша домен перенаправления. | ||
− | + | * Авторизация пользователя происходит по его ID. Для добавления нового пользователя, которого нет в системе {{NameSystem}}, нужно также указать его ID. | |
− | * Авторизация пользователя происходит по его 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, то они перезапишутся.
- Если необходимо ограничить изменения пассажиров (туристов), подтянутых при авторизации, в разделе Управление продажами → Авиабилеты → Процессы → Форма бронирования можно включить настройку Режим работы: сотрудники авиакомпании. Если настройка включена и в процессе оформления заказа пользователь изменит ФИО или дату рождения подтянутого пассажира, то при попытке забронировать заказ пользователь получит ошибку «Разрешено бронирование пассажиров только из списка туристов».