Skip to content
shaerware edited this page Mar 20, 2026 · 1 revision

Users (Управление пользователями)

Управление пользователями, ролями, приглашениями и сессиями через страницу Users в админ-панели.

Скриншот

Users

Концепция

Страница Users (UsersView.vue) — единый центр управления командой:

  • Участники воркспейса — таблица с ролями, статусами, датами
  • Смена ролей — прямо из таблицы через dropdown
  • Система приглашений — создание invite-ссылок с настройками
  • Защита — нельзя изменить собственную роль, удалить себя или владельца воркспейса

Страница Users

Информация о воркспейсе

Карточка вверху страницы с 3 метриками:

Метрика Описание
Название Имя воркспейса
Участников Количество членов
Создан Дата создания

Таблица участников

Колонка Описание
Имя Display name (иконка 👑 у владельца воркспейса)
Username Логин пользователя
Роль Dropdown-селектор (интерактивный для manage-уровня)
Присоединился Дата добавления
Последний вход Дата и время последнего логина
Статус Active (зелёный) / Inactive (серый)
Действия Кнопка удаления (только для manage-уровня)

Цвета бейджей ролей:

Роль Цвет
owner Янтарный
admin Красный
operator Синий
viewer Серый

Защита от ошибок:

  • Нельзя изменить свою роль
  • Нельзя изменить роль владельца воркспейса
  • Нельзя удалить себя
  • Нельзя удалить владельца

Приглашения (Invites)

Секция видна только пользователям с уровнем manage для модуля users.

Таблица приглашений

Колонка Описание
Роль Роль для нового пользователя (бейдж)
Email Email получателя (опционально)
Использование Счётчик: текущее / максимум
Истекает Дата истечения (или «never»)
Статус Active (зелёный) / Expired (серый)
Действия Копировать ссылку / Удалить

Создание приглашения (InviteDialog)

Параметр Описание По умолчанию
Роль Выпадающий список (кроме owner)
Email Email получателя (опционально)
Макс. использований Лимит регистраций по ссылке Без ограничений
Срок действия 24ч / 3 дня / 7 дней / 30 дней / Бессрочно

Сгенерированная ссылка: {origin}#/invite/{invite_code}

Регистрация по приглашению (InviteView)

Получатель открывает ссылку и видит форму:

  1. Информация о приглашении (воркспейс, роль, срок действия)
  2. Display Name (опционально)
  3. Username (обязательно, допустимые символы: a-z, 0-9, -._)
  4. Пароль (мин. 6 символов)
  5. Подтверждение пароля

При регистрации — автоматический вход и редирект в /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 скрываются.

Связь с legacy-ролями

CLI-инструмент manage_users.py использует legacy-роли. Маппинг:

Legacy (users.role) Workspace (roles.name)
admin admin
user operator
web operator
guest viewer

Сессии и аутентификация

JWT-токены

Параметр Значение
Алгоритм 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

CLI-инструмент

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.

API

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

Метод Путь Описание Доступ
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

Clone this wiki locally