Вход сотрудника

Сотрудник входит в ERP API по email и одноразовому паролю из письма. После входа Gigma возвращает Bearer сотрудника, его роль и права.

Этот сценарий не используется для клиентов сайта или приложения. Для них подключайте вход клиента и App Token.

Как проходит вход

  1. Отправьте одноразовый пароль на email сотрудника.
  2. Обменяйте email и пароль на Bearer.
  3. Получите текущего пользователя и проверьте роль, филиал и права.
  4. Передавайте Bearer сотрудника во всех последующих запросах.
  5. При выходе отзовите текущий Bearer или все Bearer сотрудника.

Безопасность

Bearer сотрудника даёт доступ в пределах его роли и прав. Храните его только в доверенном клиенте или на backend, передавайте по HTTPS и не добавляйте в URL, аналитику и обычные логи.

При 401 Unauthenticated удалите локальную сессию и проведите вход заново.

Шаг 1. Отправьте пароль на email

Метод
POST
URL
https://api.gigma.ru/api/send_password
Авторизация
Не требуется
Headers
Accept: application/json; Content-Type: application/json

Gigma отправит сотруднику одноразовый пароль для входа.

Параметры запроса

  • login (string, обязательно) — адрес электронной почты сотрудника.

Пример запроса

{
    "login": "employee@example.com"
}

Ответ

При успешном действии возвращается HTTP 200.

{
    "message": "Password successfully send"
}
Описание полей ответа
  • message — результат отправки.

Шаг 2. Получите Bearer сотрудника

Метод
POST
URL
https://api.gigma.ru/api/login
Авторизация
Не требуется
Headers
Accept: application/json; Content-Type: application/json

Передайте email и одноразовый пароль из письма.

Параметры запроса

  • login (string, обязательно) — адрес электронной почты.
  • password (string, обязательно) — пароль из письма, отправленного после POST /api/send_password.
  • device (string, необязательно, 3–50 символов) — понятное название устройства или интерфейса, например erp-web.

В примере используется условное значение "1111". На рабочем сервере передавайте пароль из письма.

Пример запроса

{
    "login": "employee@example.com",
    "password": "1111",
    "device": "erp-web"
}

Ответ

При успешном действии возвращается HTTP 200.

{
    "user": {
        "access_token": {
            "value": "28|exampleEmployeeToken"
        },
        "id": 1,
        "role": {
            "id": 1,
            "name": "owner",
            "description": "Собственник",
            "created_at": "2024-03-27T07:00:46.000000Z"
        },
        "branch": null,
        "department": null,
        "login": "employee@example.com",
        "phone": "79999999990",
        "first_name": "Иван",
        "last_name": "Иванов",
        "middle_name": "Иванович",
        "birthday": "1990-01-01",
        "employment_date": null,
        "dismissal_date": null,
        "avatar": null,
        "employment_contract": null,
        "is_banned": false,
        "is_sick": false,
        "creator": null,
        "active_time": 0,
        "last_activity_at": null,
        "permissions": [
            {
                "id": 2,
                "screen": null,
                "name": "edit-admins",
                "description": "Редактирование администраторов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 4,
                "screen": null,
                "name": "edit-users",
                "description": "Редактирование пользователей",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 5,
                "screen": null,
                "name": "edit-roles",
                "description": "Редактирование ролей",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 6,
                "screen": null,
                "name": "edit-permissions",
                "description": "Редактирование прав доступа",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 7,
                "screen": null,
                "name": "edit-branches",
                "description": "Редактирование филиалов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 8,
                "screen": null,
                "name": "edit-departments",
                "description": "Редактирование отделов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 10,
                "screen": {
                    "id": 1,
                    "name": "Контрагенты",
                    "created_at": "2024-03-27T07:00:46.000000Z"
                },
                "name": "edit-counterparties",
                "description": "Редактирование контрагентов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 12,
                "screen": null,
                "name": "edit-communications",
                "description": "Редактирование коммуникаций",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 14,
                "screen": {
                    "id": 2,
                    "name": "Заказы",
                    "created_at": "2024-03-27T07:00:46.000000Z"
                },
                "name": "edit-orders",
                "description": "Редактирование заказов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 16,
                "screen": {
                    "id": 3,
                    "name": "Задачи",
                    "created_at": "2024-03-27T07:00:46.000000Z"
                },
                "name": "edit-tasks",
                "description": "Редактирование задач",
                "created_at": "2024-03-27T07:00:46.000000Z"
            }
        ],
        "created_at": "2024-03-27T07:00:46.000000Z",
        "updated_at": "2024-04-03T07:07:11.000000Z"
    }
}
Описание полей ответа
  • access_token.value (string) — Bearer сотрудника. Передавайте его в заголовке:

    Authorization: Bearer <access_token.value>
  • role — роль сотрудника.

  • branch — филиал сотрудника или null.

  • department — отдел сотрудника или null.

  • permissions — права, по которым API разрешает операции.

Полный набор полей описан в следующем методе.

Готово: Bearer получен. Сразу запросите текущего пользователя и убедитесь, что сотруднику доступны нужные операции.

Шаг 3. Получите текущего сотрудника

Метод
GET
URL
https://api.gigma.ru/api/user
Авторизация
Bearer token
Headers
Accept: application/json; Content-Type: application/json

Метод возвращает профиль сотрудника, его роль, филиал, отдел и права.

Параметры запроса

Отсутствуют.

Пример запроса

GET /api/user HTTP/1.1
Host: api.gigma.ru
Authorization: Bearer <employee_token>
Accept: application/json

Ответ

При успешном действии возвращается HTTP 200.

{
    "user": {
        "id": 1,
        "role": {
            "id": 1,
            "name": "owner",
            "description": "Собственник",
            "created_at": "2024-03-27T07:00:46.000000Z"
        },
        "branch": null,
        "department": null,
        "login": "employee@example.com",
        "phone": "79999999990",
        "first_name": "Иван",
        "last_name": "Иванов",
        "middle_name": "Иванович",
        "birthday": "1990-01-01",
        "employment_date": null,
        "dismissal_date": null,
        "avatar": null,
        "employment_contract": null,
        "is_banned": false,
        "is_sick": false,
        "creator": null,
        "active_time": 0,
        "last_activity_at": "2024-04-03T07:07:19.000000Z",
        "permissions": [
            {
                "id": 2,
                "screen": null,
                "name": "edit-admins",
                "description": "Редактирование администраторов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 4,
                "screen": null,
                "name": "edit-users",
                "description": "Редактирование пользователей",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 5,
                "screen": null,
                "name": "edit-roles",
                "description": "Редактирование ролей",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 6,
                "screen": null,
                "name": "edit-permissions",
                "description": "Редактирование прав доступа",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 7,
                "screen": null,
                "name": "edit-branches",
                "description": "Редактирование филиалов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 8,
                "screen": null,
                "name": "edit-departments",
                "description": "Редактирование отделов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 10,
                "screen": {
                    "id": 1,
                    "name": "Контрагенты",
                    "created_at": "2024-03-27T07:00:46.000000Z"
                },
                "name": "edit-counterparties",
                "description": "Редактирование контрагентов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 12,
                "screen": null,
                "name": "edit-communications",
                "description": "Редактирование коммуникаций",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 14,
                "screen": {
                    "id": 2,
                    "name": "Заказы",
                    "created_at": "2024-03-27T07:00:46.000000Z"
                },
                "name": "edit-orders",
                "description": "Редактирование заказов",
                "created_at": "2024-03-27T07:00:46.000000Z"
            },
            {
                "id": 16,
                "screen": {
                    "id": 3,
                    "name": "Задачи",
                    "created_at": "2024-03-27T07:00:46.000000Z"
                },
                "name": "edit-tasks",
                "description": "Редактирование задач",
                "created_at": "2024-03-27T07:00:46.000000Z"
            }
        ],
        "created_at": "2024-03-27T07:00:46.000000Z",
        "updated_at": "2024-04-03T07:07:11.000000Z"
    }
}
Описание полей ответа
  • id — идентификатор сотрудника.
  • role — роль сотрудника в системе.
  • branch — филиал или null.
  • department — отдел или null.
  • login — email сотрудника.
  • phone — номер телефона.
  • first_name — имя.
  • last_name — фамилия.
  • middle_name — отчество.
  • birthday — дата рождения.
  • employment_date — дата приёма на работу.
  • dismissal_date — дата увольнения.
  • avatar — ссылка на аватар.
  • employment_contract — ссылка на трудовой договор.
  • is_banned — признак блокировки.
  • is_sick — признак больничного.
  • creator — сотрудник, который создал пользователя, или null.
  • active_time — активное время в системе.
  • last_activity_at — дата и время последней активности.
  • permissions — права доступа.
  • created_at — дата создания.
  • updated_at — дата последнего обновления.

Проверяйте не только название роли, но и конкретное право, необходимое для операции.

Завершите сессию сотрудника

Метод
POST
URL
https://api.gigma.ru/api/user/logout
Авторизация
Bearer token
Headers
Accept: application/json; Content-Type: application/json

Отзовите текущий Bearer или все Bearer сотрудника.

Параметры запроса

  • from_all_devices (boolean, обязательно) — true для выхода со всех устройств; false для завершения только текущей сессии.

Пример запроса

{
    "from_all_devices": true
}

Ответ

При успешном действии возвращается HTTP 200.

{
    "message": "User successfully logout from all devices"
}
Описание полей ответа
  • message — результат выхода.

После ответа удалите Bearer и локальную сессию в вашем приложении.

Что дальше