API Пользователей
RUSEON Core предоставляет встроенную систему управления пользователями на базе ролевого доступа (RBAC), данные которой персистентно хранятся во встроенной базе данных BadgerDB.
Аутентификация и права
Все эндпоинты /api/users требуют наличия валидного JWT-токена с ролью admin.
Иерархия ролей
| Роль | Права доступа |
|---|---|
admin | Полный доступ: добавление/редактирование/удаление камер, пользователей, тегов, папок, просмотр живого лога через SSE, экспорт/импорт бэкапов. |
operator | Операционный доступ: просмотр видеопотоков, архива, экспорт MP4, добавление/редактирование/удаление камер. |
viewer | Режим чтения: просмотр списка камер, живого видео, архива, статистики сервера, экспорт фрагментов MP4. |
service | Доступ для сервисной автоматизации и M2M: чтение потоков и телеметрии. |
Список пользователей
Возвращает список всех зарегистрированных пользователей (хэши паролей автоматически очищаются перед отправкой).
- Метод:
GET - Путь:
/api/users - Требуемая роль:
admin
Ответ (200 OK)
[
{
"username": "admin",
"password_hash": "",
"role": "admin"
},
{
"username": "operator1",
"password_hash": "",
"role": "operator"
}
]Пример
curl -H "Authorization: Bearer $ADMIN_TOKEN" http://localhost:8080/api/usersСоздание пользователя
Добавляет нового пользователя с указанной ролью. Пароль автоматически хэшируется с использованием bcrypt.
- Метод:
POST - Путь:
/api/users - Требуемая роль:
admin
Тело запроса
{
"username": "security_guard",
"password": "SecurePassword123!",
"role": "viewer"
}Ответ (201 Created)
{
"username": "security_guard",
"password_hash": "$2a$10$...",
"role": "viewer"
}Пример
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
Тело запроса
{
"password": "NewSecretPassword456!",
"role": "operator"
}Ответ (200 OK)
{
"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)
{
"message": "User deleted"
}Пример
curl -X DELETE -H "Authorization: Bearer $ADMIN_TOKEN" \
http://localhost:8080/api/users/security_guard