-
Notifications
You must be signed in to change notification settings - Fork 5
Users
Управление пользователями, ролями, приглашениями и сессиями через страницу Users в админ-панели.

Страница Users (UsersView.vue) — единый центр управления командой:
- Участники воркспейса — таблица с ролями, статусами, датами
- Смена ролей — прямо из таблицы через dropdown
- Система приглашений — создание invite-ссылок с настройками
- Защита — нельзя изменить собственную роль, удалить себя или владельца воркспейса
Карточка вверху страницы с 3 метриками:
| Метрика | Описание |
|---|---|
| Название | Имя воркспейса |
| Участников | Количество членов |
| Создан | Дата создания |
| Колонка | Описание |
|---|---|
| Имя | Display name (иконка 👑 у владельца воркспейса) |
| Username | Логин пользователя |
| Роль | Dropdown-селектор (интерактивный для manage-уровня) |
| Присоединился | Дата добавления |
| Последний вход | Дата и время последнего логина |
| Статус | Active (зелёный) / Inactive (серый) |
| Действия | Кнопка удаления (только для manage-уровня) |
Цвета бейджей ролей:
| Роль | Цвет |
|---|---|
| owner | Янтарный |
| admin | Красный |
| operator | Синий |
| viewer | Серый |
Защита от ошибок:
- Нельзя изменить свою роль
- Нельзя изменить роль владельца воркспейса
- Нельзя удалить себя
- Нельзя удалить владельца
Секция видна только пользователям с уровнем
manageдля модуляusers.
| Колонка | Описание |
|---|---|
| Роль | Роль для нового пользователя (бейдж) |
| Email получателя (опционально) | |
| Использование | Счётчик: текущее / максимум |
| Истекает | Дата истечения (или «never») |
| Статус | Active (зелёный) / Expired (серый) |
| Действия | Копировать ссылку / Удалить |
| Параметр | Описание | По умолчанию |
|---|---|---|
| Роль | Выпадающий список (кроме owner) | — |
| Email получателя (опционально) | — | |
| Макс. использований | Лимит регистраций по ссылке | Без ограничений |
| Срок действия | 24ч / 3 дня / 7 дней / 30 дней / Бессрочно | — |
Сгенерированная ссылка: {origin}#/invite/{invite_code}
Получатель открывает ссылку и видит форму:
- Информация о приглашении (воркспейс, роль, срок действия)
- Display Name (опционально)
- Username (обязательно, допустимые символы: a-z, 0-9,
-._) - Пароль (мин. 6 символов)
- Подтверждение пароля
При регистрации — автоматический вход и редирект в /chat.
| Роль | Описание | Удаление |
|---|---|---|
| admin | Полный доступ ко всем модулям | Нельзя |
| operator | Чтение + запись ресурсов | Нельзя |
| viewer | Только чтение | Нельзя |
Кастомные роли можно создавать с произвольным набором разрешений через API.
Разрешения — это пары {модуль: уровень}:
Уровни (иерархия):
-
view(1) — только чтение -
edit(2) — чтение + запись -
manage(3) — полный контроль (включает view + edit)
Модули:
chat, channels, knowledge, llm, tts, sales, system, users, speech, gsm и др.
В cloud-режиме (
DEPLOYMENT_MODE=cloud) модулиspeechиgsmскрываются.
CLI-инструмент manage_users.py использует legacy-роли. Маппинг:
| Legacy (users.role) | Workspace (roles.name) |
|---|---|
| admin | admin |
| user | operator |
| web | operator |
| guest | viewer |
| Параметр | Значение |
|---|---|
| Алгоритм | HS256 |
| Время жизни | 24 часа (по умолчанию) |
| Содержимое | username, user_id, role, workspace_id, exp, iat, jti |
| Хранение |
localStorage['admin_token'] (админ-панель), Capacitor Preferences (мобильное) |
Каждый вход создаёт запись в таблице user_sessions с JTI (JWT ID). Это позволяет:
-
Просмотр активных сессий —
GET /admin/auth/sessions -
Отзыв конкретной сессии —
DELETE /admin/auth/sessions/{jti} - Массовый отзыв — при смене пароля или деактивации все сессии аннулируются
-
Автоочистка — фоновая задача
session-cleanupудаляет истёкшие сессии старше 7 дней
Три in-memory кеша для производительности:
- SessionCache — JTI → user_id (быстрая проверка отзыва)
- PermissionsCache — role_name → {module: level}
- MemberRoleCache — (user_id, workspace_id) → role_name
python scripts/manage_users.py list # Список пользователей
python scripts/manage_users.py create alice pass123 --role admin # Создать пользователя
python scripts/manage_users.py set-password alice newpass # Сменить пароль
python scripts/manage_users.py set-role alice operator # Сменить роль
python scripts/manage_users.py disable alice # Деактивировать
python scripts/manage_users.py enable alice # Активировать
python scripts/manage_users.py delete alice # УдалитьВывод list: ID, Username, Role, WS Role, Active, Display Name, Last Login.
| Метод | Путь | Описание | Доступ |
|---|---|---|---|
POST |
/admin/auth/login |
Вход (username + password) | Rate-limited |
GET |
/admin/auth/me |
Текущий пользователь | Авторизация |
GET |
/admin/auth/profile |
Полный профиль | Авторизация |
PUT |
/admin/auth/profile |
Обновить display name | settings:edit |
POST |
/admin/auth/change-password |
Сменить пароль (отзывает все сессии) | settings:edit |
GET |
/admin/auth/sessions |
Активные сессии | Авторизация |
DELETE |
/admin/auth/sessions/{jti} |
Отозвать сессию | Авторизация |
GET |
/admin/auth/permissions |
Разрешения текущего пользователя | Авторизация |
| Метод | Путь | Описание | Доступ |
|---|---|---|---|
GET |
/admin/workspace |
Информация о воркспейсе | users:view |
GET |
/admin/workspace/members |
Список участников | users:view |
PUT |
/admin/workspace/members/{user_id}/role |
Сменить роль участника | users:manage |
DELETE |
/admin/workspace/members/{user_id} |
Удалить участника | users:manage |
| Метод | Путь | Описание | Доступ |
|---|---|---|---|
POST |
/admin/workspace/invites |
Создать приглашение | users:manage |
GET |
/admin/workspace/invites |
Список приглашений | users:manage |
DELETE |
/admin/workspace/invites/{id} |
Удалить приглашение | users:manage |
GET |
/admin/workspace/invites/{code}/info |
Информация о приглашении | Публичный |
POST |
/admin/workspace/invites/accept |
Регистрация по приглашению | Rate-limited |
| Метод | Путь | Описание | Доступ |
|---|---|---|---|
GET |
/admin/roles |
Список ролей с разрешениями | users:manage |
POST |
/admin/roles |
Создать кастомную роль | users:manage |
GET |
/admin/roles/{id} |
Получить роль | users:manage |
PUT |
/admin/roles/{id} |
Обновить роль | users:manage |
DELETE |
/admin/roles/{id} |
Удалить кастомную роль | users:manage |
См. также: RBAC, Settings, Data-Privacy