Skip to content

API Пользователей

RUSEON Core предоставляет встроенную систему управления пользователями на базе ролевого доступа (RBAC), данные которой персистентно хранятся во встроенной базе данных BadgerDB.

Аутентификация и права

Все эндпоинты /api/users требуют наличия валидного JWT-токена с ролью admin.

Иерархия ролей

РольПрава доступа
adminПолный доступ: добавление/редактирование/удаление камер, пользователей, тегов, папок, просмотр живого лога через SSE, экспорт/импорт бэкапов.
operatorОперационный доступ: просмотр видеопотоков, архива, экспорт MP4, добавление/редактирование/удаление камер.
viewerРежим чтения: просмотр списка камер, живого видео, архива, статистики сервера, экспорт фрагментов MP4.
serviceДоступ для сервисной автоматизации и M2M: чтение потоков и телеметрии.

Список пользователей

Возвращает список всех зарегистрированных пользователей (хэши паролей автоматически очищаются перед отправкой).

  • Метод: GET
  • Путь: /api/users
  • Требуемая роль: admin

Ответ (200 OK)

json
[
  {
    "username": "admin",
    "password_hash": "",
    "role": "admin"
  },
  {
    "username": "operator1",
    "password_hash": "",
    "role": "operator"
  }
]

Пример

bash
curl -H "Authorization: Bearer $ADMIN_TOKEN" http://localhost:8080/api/users

Создание пользователя

Добавляет нового пользователя с указанной ролью. Пароль автоматически хэшируется с использованием bcrypt.

  • Метод: POST
  • Путь: /api/users
  • Требуемая роль: admin

Тело запроса

json
{
  "username": "security_guard",
  "password": "SecurePassword123!",
  "role": "viewer"
}

Ответ (201 Created)

json
{
  "username": "security_guard",
  "password_hash": "$2a$10$...",
  "role": "viewer"
}

Пример

bash
curl -X POST -H "Authorization: Bearer $ADMIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"username":"security_guard","password":"SecurePassword123!","role":"viewer"}' \
  http://localhost:8080/api/users

Редактирование пользователя

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

  • Метод: PUT
  • Путь: /api/users/:username
  • Требуемая роль: admin

Тело запроса

json
{
  "password": "NewSecretPassword456!",
  "role": "operator"
}

Ответ (200 OK)

json
{
  "username": "security_guard",
  "password_hash": "$2a$10$...",
  "role": "operator"
}

Автоматический отзыв токенов

При изменении роли пользователя или его удалении все ранее выданные JWT-токены мгновенно инвалидируются благодаря встроенной проверке актуальности роли в BadgerDB на каждый запрос.


Удаление пользователя

Удаляет учетную запись пользователя из системы.

  • Метод: DELETE
  • Путь: /api/users/:username
  • Требуемая роль: admin

Защита аккаунта администратора

Пользователь по умолчанию admin защищен от случайного удаления через API (400 Bad Request: Cannot delete default admin).

Ответ (200 OK)

json
{
  "message": "User deleted"
}

Пример

bash
curl -X DELETE -H "Authorization: Bearer $ADMIN_TOKEN" \
  http://localhost:8080/api/users/security_guard

Released under the MIT License.