Персонал и права
Сотрудники, группы и права доступа, разграничение по организациям.
Персонал и доступ
Здесь заводят сотрудников, собирают их в группы и решают, что каждая группа видит и может менять. Раздел открыт только пользователям с правами root. Четыре вкладки: Персонал (люди), Интерфейс (какие поля видны в формах), Доступ к моделям (разделы и справочники) и Доступ к клиентам (папки клиентского дерева).
Каждое изменение записывается в журнал действий: кого завели, кому сменили группу, какие права отметили, какую группу создали или удалили. Смотреть — в Отчёты → Журнал действий.
Как завести сотрудника, чем группа доступа отличается от роли интерфейса, откуда у группы значок и цвет, почему «не отмечено — значит запрещено» и что происходит с уволенным.
Подраздел «Персонал»
Список сотрудников: кто работает, в каких группах состоит, как с ним связаться и когда он последний раз заходил. Уволенного не удаляют — он уходит в архив (кнопка «Архивные» справа в шапке), а его записи в журнале остаются. У кого нет своей фотографии, тому рисуется кружок с инициалами.
Набор колонок настраивается кнопкой «Колонки» и запоминается за сотрудником — каждый оставляет то, чем пользуется:
| Колонка | Что показывает |
|---|---|
| Сотрудник | Фото или инициалы, имя и логин. |
| Контакты | Почта и телефон в одну строку. Незаполненное подсвечено янтарным, подсказка объясняет последствие: «Почта не указана — не придут уведомления и восстановление пароля». Если сотрудник привязал телеграм — значок со ссылкой на его аккаунт. |
| Организации | Бейджи юрлиц, к которым привязан сотрудник. |
| Группа | Значок и название. Если групп больше двух, остальные показываются только значками, названия — в подсказке. |
| Статус | Работает или отключён. |
| Последний вход | Дата, время и адрес, с которого зашли; колонка сортируется. |
| Второй фактор | Подключён ли вход по коду. |
| Пароль | Сколько дней назад менялся — видно, у кого он просрочен. |
| Ящик | Заведена ли почта в домене организации. |
Над таблицей — поиск, выбор статуса и выбор группы; оба списка показывают значки и цвета групп. Рядом с выбором группы стоит шестерёнка — она открывает панель управления группами. Отметьте несколько строк, и у нижнего края появится полоса массовых действий: включить, отключить, отправить в архив, добавить в группу. Каждое действие спрашивает подтверждение и пишется в журнал.
В меню строки: редактировать, журнал действий этого сотрудника, перейти в его профиль, отключить.
Карточка сотрудника
Организации идут первым блоком: без организации сотрудник не увидит ни одного клиента, поэтому организация по умолчанию включена всегда, а сохранить пустой список нельзя. Логин и пароль стоят в одну строку: у пароля есть кнопка генерации и «глаз», а введённый руками пароль сразу проверяется по политике — окно говорит, чего не хватает, не дожидаясь сохранения. У поля почты кнопка «Создать» заводит ящик в домене выбранной организации. Группы выбираются плитками со значками. Кнопка «Сохранить» включается, только когда заполнено всё обязательное.
Управление группами
Шестерёнка рядом с выбором группы открывает боковую панель со всеми группами доступа. На карточке — значок, название, техническое имя и сколько человек состоит.
Клик по карточке раскрывает её: кто в группе, какие разделы ей открыты и ссылки на страницы прав. Одновременно раскрыта одна карточка.
Удалить можно только пустую группу — пока в ней кто-то состоит, кнопка выключена. Перед удалением спрашивается подтверждение, событие пишется в журнал.
Значок и цвет группы
Одно и то же окно открывается из панели групп и со страниц прав — раньше каждая страница заводила группу по-своему, и созданная «на правах» появлялась безымянным серым кружком.
Название пишется по-человечески, техническое имя латиницей подставляется само (пока его не правили руками). Значок выбирается из собственного набора ролей, цвет — из палитры, включая градиенты. Значки и цвета, уже занятые другой группой, в выборе не показываются: иначе две разные роли выглядят одинаково.
На телефоне
Строка превращается в карточку: контакты, организации, группы, статус и последний вход — всё то же, что на большом экране. Кнопки стоят в одну линию, «Архивные» и «Добавить» — только значками. Меню строки открывается нижней панелью с крупными целями.
У каждого сотрудника есть ещё профиль — его личная страница с аватаром, избранными отчётами и журналом собственных действий.
Подраздел «Интерфейс»
Настройка видимости полей в формах для каждой роли. Поля можно скрыть от группы, сделать read-only или required. Например, кассиру оставить только поле «Сумма платежа», а инженеру — все поля кроме финансовых.
Подраздел «Доступ к моделям»
Какие модели биллинга видит каждая группа пользователей. Чекбоксы Read / Create / Update / Delete для каждой модели (Tarif, Usluga, Abonents, NAS, и т.д.). Без галочки Read — пункт меню скрывается у этой группы.
RBAC разделов админки
Обычные модели (Тариф, Услуга и т.п.) гейтятся чекбоксами выше. Но часть разделов — CRM, лендинги, настройки — это не модели, а отдельные страницы. Для них на странице группы есть блок «Разделы админки»: отметьте, какие разделы доступны этой группе.
Политика — deny-by-default: раздел из этого списка виден в меню и открывается по ссылке только у групп, где он отмечен (плюс суперпользователь — всегда). Без отметки раздел скрыт в меню и запрещён даже по прямой ссылке — открывается страница «Доступ к разделу запрещён».
flowchart TD
A[Запрос к разделу] --> B{Суперпользователь?}
B -- Да --> OK[Доступ разрешён]
B -- Нет --> C{Раздел в списке
«Разделы админки»?}
C -- Нет --> OK
C -- Да --> D{Есть отметка
у группы пользователя?}
D -- Да --> OK
D -- Нет --> DENY[403 «Доступ запрещён»
+ пункт скрыт в меню]
Дефолтное распределение, засеянное при внедрении (суперпользователь и Администратор + Директор — во всех разделах):
| Раздел | Кому доступен (кроме su, Администратора и Директора) |
|---|---|
| Salesbot / Рекламные кампании / Лендинги | Маркетинг |
| CRM: Мастер, Воронки, Доп. поля, Голосовая почта · Поддержка → Настройки | Старший менеджер |
| CRM → Настройки | — |
| Настройки: Система, Интеграции, Лицензия, ЛК, AI | — |
| Настройки → Финансы (платежи/фискал/банк) | Бухгалтер |
| Настройки → Инфраструктура (почта/DNS/бэкапы) | только Администратор |
| Настройки → Сообщения | Старший менеджер |
| Настройки → Маркетинг | Маркетинг |
| Клиенты | все операционные роли + Маркетинг (кроме Кладовщика) |
| Тарификация | Ст.менеджер, Менеджер, Ст.сэйлс, Бухгалтер, Отчётность, Маркетинг |
| CRM (воронка/задачи/карта) | менеджеры, сэйлсы, Монтажник, Отчётность, Маркетинг |
| Поддержка (входящие/тикеты) | Ст.менеджер, Менеджер, Отчётность |
| Оборудование | Монтажник, Отчётность |
| Справочники | Ст.менеджер, Менеджер, Бухгалтер, Монтажник |
| Отчёты | менеджеры, Ст.сэйлс, Бухгалтер, Отчётность, Маркетинг |
| Документы | Ст.менеджер, Менеджер, Бухгалтер |
| Видеонаблюдение | менеджеры, сэйлсы, Монтажник, Отчётность, Маркетинг |
| IPTV / IP-телефония | Ст.менеджер, Менеджер, Отчётность |
| Склад | Кладовщик, Монтажник, Отчётность |
| Клиенты · Смена заполненного адреса (подробнее) | Ст.сэйлс, Ст.менеджер |
Часть прав не открывает раздел, а разрешает действие внутри него — например, «Клиенты · Смена заполненного адреса». Такие права стоят в том же блоке «Разделы админки» и так же выдаются только явно.
Если у роли нет доступа к разделу, при переходе по ссылке открывается понятная страница:
Аварийный выключатель
Настройка SECTION_RBAC_ENABLED = 0 мгновенно отключает весь RBAC
разделов (доступ ко всем разделам открывается всем сотрудникам) — на случай, если
какая-то роль оказалась заблокирована ошибочно. Точечно доступ правится тут же,
галочками в блоке «Разделы админки».
Подраздел «Доступ к клиентам»
Какие папки клиентского дерева видит каждая группа. Полезно для разделения филиалов: агент филиала «Север» видит только папку «Север», агент филиала «Юг» — только папку «Юг», главный администратор видит весь корень.
Дерево ищется по названию, ветки сворачиваются и разворачиваются целиком, счётчик показывает, сколько папок отмечено. Если отмечены не все дети, у родителя стоит частичная отметка — по экрану сразу видно, где доступ выдан частично. Отметка родителя открывает всю ветку сразу. Кнопка сохранения держится у нижнего края и не уезжает за экран.
Профиль сотрудника
/admin/settings/profile/ — личная страница сотрудника (сам о себе; root — о любом). Помимо аватара, ФИО и контактов здесь:
- «Что я могу» — какие разделы админки доступны сотруднику (по RBAC
section_access) и через какую группу получен доступ; ниже — CRUD-матрица по моделям. Это фактический механизм доступа, а не только список Django-прав. - Организации — к каким юрлицам привязан сотрудник (бейджи организаций). Влияет на домены почты, кадровые документы и скоуп в разделе «Персонал».
- Почтовые ящики — просмотр и создание ящика в доступных доменах (если включено в «Настройках сервера»), с автогенерацией пароля и пересылкой.
- Сессии — активные входы с временем начала; смена пароля (тот же пароль синхронизируется с IMAP/SMTP-ящиком сотрудника).
- Избранные отчёты и личная лента аудита (действия сотрудника, ответы на комментарии).
Политика пароля персонала
Единая политика паролей сотрудников (включена по умолчанию). Настройки — на вкладке Безопасность раздела «Настройки системы»:
| Настройка | По умолчанию | Что делает |
|---|---|---|
STAFF_PASSWORD_POLICY_ENABLED | вкл. | Общий выключатель проверки сложности пароля. |
STAFF_PASSWORD_MIN_LENGTH | 10 (не ниже 8) | Минимальная длина. Плюс требования: буквы + цифры + спецсимвол, отсев словарных паролей по «скелету» (Qwerty123! ловится как qwerty). |
Пароль сотрудника через синхронизацию становится паролем его почтового ящика (IMAP/SMTP) — поэтому политика едина для входа в биллинг и в почту. Принудительная смена пароля (слабый / первый вход) удерживает сотрудника на профиле до смены; AJAX-запросы в это время получают 403.
SU_PASSWORD_MAX_AGE_DAYS) и их текущие значения в БД — «настройка стоит, но не применяется» ≠ «настройка выключена».