Bronjoy
Начало работы

Аутентификация

Как устроена аутентификация в Bronjoy — токены API, типы пользователей и заголовки запросов.

Обзор

Bronjoy использует Laravel Sanctum для аутентификации API. Все защищённые эндпоинты требуют Bearer-токен в заголовке Authorization.

Authorization: Bearer your-token-here

Каждому примеру с /api/org/... в этой документации также нужен заголовок X-Organization-ID, описанный ниже, — для краткости он опущен в отдельных фрагментах.

Типы пользователей

В Bronjoy есть два разных типа пользователей с отдельными сценариями аутентификации:

ТипКто этоПрефикс маршрута авторизации
StaffВладельцы организации и сотрудники/api/org/auth/...
ClientКонечные клиенты, которые записываются/api/client/auth/...

Аутентификация сотрудников

Регистрация

POST /api/org/auth/register
Content-Type: application/json
{
  "name": "Jane Smith",
  "email": "[email protected]",
  "password": "secret"
}

На указанную почту отправляется код подтверждения. Подтвердите его:

POST /api/org/auth/verify
Content-Type: application/json
{
  "email": "[email protected]",
  "code": "123456"
}

В ответе приходит Bearer-токен:

{
  "token": "1|abc123...",
  "user": { "id": 1, "name": "Jane Smith", "email": "[email protected]" }
}

Вход

POST /api/org/auth/login
Content-Type: application/json
{
  "email": "[email protected]",
  "password": "secret"
}

Выход

POST /api/auth/logout
Authorization: Bearer your-token-here

Это отзывает текущий токен.

Аутентификация клиентов

Клиенты авторизуются по одноразовому коду (OTP) на телефон или email — без паролей.

Телефон (OTP)

POST /api/client/auth/phone/request
Content-Type: application/json
{ "phone": "+998901234567" }
POST /api/client/auth/phone/verify
Content-Type: application/json
{
  "phone": "+998901234567",
  "code": "1234"
}

Email (OTP)

POST /api/client/auth/email/request
Content-Type: application/json
{ "email": "[email protected]" }
POST /api/client/auth/email/verify
Content-Type: application/json
{
  "email": "[email protected]",
  "code": "123456"
}

Оба сценария возвращают в ответе поле token.

Контекст организации

Большинству эндпоинтов /api/org/... нужен контекст организации, так как аккаунт сотрудника может принадлежать сразу нескольким организациям. Передавайте ID организации в заголовке каждого запроса:

X-Organization-ID: 1

Запросы к /api/org/... без этого заголовка возвращают 400 Bad Request. Запросы к организации, к которой у вас нет доступа, возвращают 403 Forbidden.

Персональные токены API

Вы можете выпускать именованные токены API с ограниченными правами для программного доступа — это удобно для скриптов, интеграций и MCP-клиентов.

Создание токена

POST /api/org/ai/tokens
Authorization: Bearer your-staff-token
Content-Type: application/json
{
  "name": "My Integration",
  "expires_in_days": 90
}

Ответ:

{
  "token": "3|AbCdEf...",
  "mcp_endpoint": "https://api.bronjoy.com/api/mcp/organization/1",
  "expires_at": "2026-06-23T12:00:00Z",
  "instructions": "Use this token in the Authorization header: Bearer <token>"
}

Токены показываются только один раз. Храните их надёжно — получить их повторно нельзя.

Созданный токен привязан к конкретной организации через право mcp:organization:{id} и по умолчанию истекает через 90 дней (максимум — 365 дней).

Получение текущего пользователя

GET /api/auth/me
Authorization: Bearer your-token-here

Возвращает профиль авторизованного пользователя.

Copyright © 2026