Аутентификация
Orbita использует Laravel Sanctum — токены передаются в заголовке Authorization: Bearer.
Локальная аутентификация
http
POST /api/login-local
Content-Type: application/json
{
"email": "user@example.com",
"password": "secret"
}Ответ:
json
{
"token": "1|plainTextToken...",
"user": {
"id": 1,
"name": "Иван Иванов",
"email": "user@example.com",
"roles": ["it_support_manager"]
},
"tenant": {
"slug": "mycompany"
}
}Используйте токен во всех последующих запросах:
bash
curl https://app.orbita.example/api/e/it_requests \
-H "Authorization: Bearer 1|plainTextToken..."SSO (Authentik)
http
POST /api/login-sso
Content-Type: application/json
{
"token": "<Authentik Bearer Token>"
}Токен верифицируется у Authentik. При первом входе пользователь создаётся автоматически; группы из SSO маппируются на орг. единицы по настроенным правилам (/api/sys/auth-mappings).
OAuth (Google / GitHub)
Редирект:
GET /api/auth/google/redirect
GET /api/auth/github/redirectПосле авторизации у провайдера браузер возвращается на:
GET /api/auth/google/callback
GET /api/auth/github/callbackЕсли email провайдера ещё не в системе — создаётся новый аккаунт.
Регистрация (SaaS)
http
POST /api/register
Content-Type: application/json
{
"name": "Иван Иванов",
"email": "ivan@example.com",
"password": "secret123",
"password_confirmation": "secret123",
"company_name": "ООО Ромашка",
"slug": "romashka"
}Поля company_name и slug нужны только в SaaS-режиме (APP_MODE=saas).
Приглашение пользователя
Администратор приглашает пользователя:
http
POST /api/tenant/invite
Authorization: Bearer <admin-token>
Content-Type: application/json
{
"email": "newuser@example.com",
"roles": ["it_support_agent"]
}Получить детали приглашения (публично):
http
GET /api/join/{token}Принять приглашение:
http
POST /api/join/{token}
Content-Type: application/json
{
"name": "Новый Сотрудник",
"password": "secret123",
"password_confirmation": "secret123"
}Выход / инвалидация токена
http
POST /api/logout
Authorization: Bearer <token>Имперсонация (только администраторы)
http
POST /api/impersonate/{user_id}
Authorization: Bearer <admin-token>Возвращает новый токен от имени указанного пользователя.
Проверка токена
http
GET /api/user
Authorization: Bearer <token>Возвращает текущего пользователя с ролями и разрешениями.