Первый

This commit is contained in:
2024-12-09 19:24:12 +06:00
commit 3e35cf6980
32 changed files with 3535 additions and 0 deletions

248
README.md Normal file
View File

@ -0,0 +1,248 @@
# Описание функций авторизации
____
#### Алгоритм
Refresh token токен действует 12 часов и за эти 12 часов не реже чем раз в 3 часа нужно обновить Refresh token ну и заодно Access token обновиться.
Аccess token действует 20 минут (позже уменьшу до 10 минут) и его можно обновить в любое время, если будет просрочен выдаст 401 ошибку. Чтобы время от времени по расписанию не запрашивать обновление токена,
можно сделать обвёртку для 2й отправки запроса, в случае выявления просрочки токена чтобы эта обвёртка отправляла запрос Refresh, а потом обратно в нужное место отправляла запрос.
____
## Оглавление
1. [Получить список разрешений для пользователя по Access token](#получить-список-разрешений-для-пользователя-по-Access-token)
2. [Получить CAPTCHA с проверочным токеном](#получить-captcha-с-проверочным-токеном)
3. [Создать нового пользователя](#создать-нового-пользователя)
4. [Получить информацию о пользователе по его Access token ](#получить-информацию-о-пользователе-по-его-access-token )
5. [Авторизоваться](#авторизоваться)
6. [Обновить токен доступа (а также обновить рефреш токен)](#обновить-токен-доступа-а-также-обновить-рефреш-токен)
7. [Ссылка для подтверждения смены пароля (переходят на неё из почты)](#ссылка-для-подтверждения-смены-пароля-переходят-на-неё-из-почты)
8. [Принять капчу и код для инициализации процедуры восстановления пароля](#принять-капчу-и-код-для-инициализации-процедуры-восстановления-пароля)
9. [Обновить пароль по логину и старому паролю](#обновить-пароль-по-логину-и-старому-паролю)
10. [Проверить валидность токена](#проверить-валидность-токена)
____
### Получить список разрешений для пользователя по Access token
https://istransit.kz/api/authorization/v02/access/
Запрос может содержать параметры фильтрации для поиска частичного совпадения названия (действия), если параметров фильтрации нет или он равен null то вернёт все записи.
Пример запроса:
```json
{
"action_name":"arm_"
}
```
Пример ответа:
```json
{
"error_code": 0,
"error_message": "",
"data": [
"arm_accounting",
"arm_carrier",
"arm_hr"]
}
```
### Получить CAPTCHA с проверочным токеном
https://istransit.kz/api/authorization/v02/captcha/
Пример запроса:
```json
{
"email":"test@mail.ru"
}
```
Пример ответа:
```json
{
"image":"тут gif в base64",
"token":"ZUROMC9xQVpRNjVGZGZBSWdrSGk5NHlPK2JXcHJMHVlbWVBPT0=.ywHb5zzI+ARK3XDRpgVkC1fdlqEQWWOXLuVIu\/rRMho="
}
```
Где "image" это рисунок в base64
А "token" это токен для последующей проверки введённого кода "code":"XXXXXX".
По умолчанию токен captcha действует 10 минут.
### Создать нового пользователя
https://istransit.kz/api/authorization/v02/create/
Письмо с паролем придёт на почту
Пример запроса:
```json5
{
"country_id": "1",
"company_name": "ТОО 'Тестовая компания'",
"position": "Менеджер",
"name": "Берик",
"surname": "Султанов",
"patronymic": "Серикович",
"phone": "+7777123456",
"email": "test@test.kz",
"code":"11111", //Код с CAPTCHA
"token":"ZUROMC9xQVpRNjVGZGZBSdyc2JIV0ZueHdDMHVlbWVBPT0=.ywHb5zzI+ARK3XDRpgVkC1fdlqEQWWOXLuVIu\/rRMho=" //Токен с CAPTCHA
}
```
Пример ответа:
```json
{
"error_code": "0",
"error_message":""
}
```
### Получить информацию о пользователе по его Access token
https://istransit.kz/api/authorization/v02/info/
Запрос:
```
Cookie: jwt_a = Access token
```
Пример ответа:
```json5
{
"error_code": "0",
"error_message": "",
"name": "Igor",
"surname": "M",
"patronymic": "I",
"roles": "Кассир, Кладовщик",
"time": "1703838784", //Время с сервера
"expiration": "1696924443", //Когда "протухнет" пароль
"appid": "postman",
"arm": "monitoring"
}
```
### Авторизоваться
https://istransit.kz/api/authorization/v02/login/
Пример запроса:
```json
{
"login" : "test@istt.kz",
"password" : "test",
"totp": "123456",
"appid" : "postman"
}
```
В ответ:
```json5
{
"error_code": "0",
"error_message": "",
"name": "Igor",
"surname": "M",
"patronymic": "I",
"roles": "Кассир, Кладовщик",
"time": "1703838784", //Время с сервера
"expiration": "1696924443", //Когда протухает пароль
"appid": "postman",
"arm": "monitoring"
}
```
Также в ответ Cookie:
```
Cookie: jwt_a = Access token
Cookie: jwt_r = Refresh token
```
### Обновить токен доступа (а также обновить рефреш токен)
https://istransit.kz/api/authorization/v02/refresh/
В запросе Cookie:
```
Cookie: jwt_a = Access token
Cookie: jwt_r = Refresh token
```
Пример ответа:
```json
{
"error_code": "0",
"error_message":""
}
```
Также в ответе Cookie:
```
Cookie: jwt_a = Access token
Cookie: jwt_r = Refresh token
```
### Ссылка для подтверждения смены пароля (переходят на неё из почты)
https://istransit.kz/api/authorization/v02/reset/
Пример запроса:
```html
https://istransit.kz/api/authorization/v02/reset/?token=xxxxx&lng=1
```
В ответ HTML страница с результатом на 7 секунд, с переходом на главную страницу:
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<title></title>
<meta http-equiv="refresh" content="7; url='https://aistransit.kz'" />
</head>
<body>
<h1>Описание результата</h1>
</body>
</html>
```
### Принять капчу и код для инициализации процедуры восстановления пароля
https://istransit.kz/api/authorization/v02/restore/
Пример запроса:
```json
{
"code":"11111",
"token":"ZUROMC9xQVpRNjVGZGZBSdyc2JIV0ZueHdDMHVlbWVBPT0=.ywHb5zzI+ARK3XDRpgVkC1fdlqEQWWOXLuVIu\/rRMho="
}
```
Код и токен из captcha
Пример ответа:
```json
{
"error_code": "0",
"error_message":""
}
```
### Обновить пароль по логину и старому паролю
https://istransit.kz/api/authorization/v02/update/
Для этой функции авторизация пользователя не обязательна, а значит пользователя можно не авторизовывать если у него просрочен пароль.
В новом пароле должно быть цифра, большая латинская буква, маленькая латинская буква, один спец символ и длина не менее 6 символов.
Пример запроса:
```json
{
"login":"test@mail.ru",
"password":"12345",
"password_new":"54321"
}
```
Пример ответа:
```json
{
"error_code": "0",
"error_message":""
}
```
### Проверить валидность токена
https://istransit.kz/api/authorization/v02/alive/
На вход Cookie с jwt_a токеном, на выход код ошибки.
Пример ответа:
```json
{
"error_code": "0",
"error_message":""
}
```