Пользователи и группы — Администрирование¶
Обзор¶
Домен users-and-groups настраивает:
- жизненный цикл пользователя (создание, профиль, увольнение, восстановление, экспорт);
- структуру и типы групп, вложенность и доменные ограничения;
- организационную структуру (подразделения, должности, связи с группами);
- рабочие места групп (UserGroupSettings) и дефолты для новых пользователей;
- роль-модель (roles / rolePowers / roleUser).
Домен использует все три механизма администрирования:
1. автоадминка (dbadmin) для конфигурационных таблиц;
2. EntityEditor (JSON-схемы) для ролей/типов/настроек;
3. специализированные Admin API контроллеры для операций, где CRUD-формы недостаточно.
Техническая реализация runtime и сервисной логики описана в docs/domains/users-and-groups/backend.md.
В этом документе фокус только на настройках и диагностике мисконфигураций.
Механизмы администрирования¶
Автоадминка (dbadmin)¶
| Alias формы | Название | Таблица БД | Полей | Секций | Deps |
|---|---|---|---|---|---|
users |
Пользователи | dbo.Users |
150 | 4 | см. AdminFormSectionColumnsDeps |
groups |
Группы | dbo.Groups |
10 | 1 | см. AdminFormSectionColumnsDeps |
workplaces |
Рабочие места | dbo.UserGroupSettings |
45 | 5 | см. AdminFormSectionColumnsDeps |
users-new-default-settings |
Настройки по умолчанию¹ | dbo.UsersNewDefaultSettings |
38 | 5 | см. AdminFormSectionColumnsDeps |
org-structure |
Орг.структура | dbo.OrgStructureUnit |
19 | 2 | см. AdminFormSectionColumnsDeps |
org-structure-type |
Типы орг.структуры | dbo.OrgStructureType |
8 | 1 | см. AdminFormSectionColumnsDeps |
org-structure-appointment |
Должности | dbo.OrgStructureAppointment |
4 | 1 | см. AdminFormSectionColumnsDeps |
rooms |
Список комнат | dbo.Rooms |
3 | 1 | — |
group-parents |
Состав группы | dbo.GroupParents |
4 | 1 | — |
group-domain-access |
Доступ к доменам | dbo.GroupDomainAccess |
6 | 1 | — |
group-users-membership |
История членства | dbo.GroupUsersMembership |
5 | 1 | — |
special-permissions |
Специальные права | dbo.GroupSpecialPermissions |
4 | 1 | — |
user-info-ext-values |
Расширенные свойства пользователя | dbo.UserInfoExtValues |
7 | 1 | — |
add-user |
Создать пользователя | dbo.SummaryCategories |
5 | 1 | — |
¹ Форма users-new-default-settings заменена на кастомную: позволяет выбирать группы пользователей в поле «Применить к группам» и массово применять настройки в трёх режимах (Notifications / Settings / All). Кнопка «Применить» неактивна без выбранной группы.
EntityEditor¶
| Схема JSON | Таблица | Handler/контур |
|---|---|---|
roles.json |
dbo.Roles |
EntityModel + api/admin/entityModel |
rolePowers.json |
(связи полномочий ролей) | EntityModel + api/admin/entityModel |
roleUser.json |
(связи ролей и пользователей) | EntityModel + api/admin/entityModel |
groupType.json |
dbo.GroupTypes |
EntityModel + api/admin/entityModel |
userSettings.json |
dbo.UserSettings |
EntityModel + api/admin/entityModel |
userInfoExt.json |
(расширенные свойства пользователя) | EntityModel + api/admin/entityModel |
Admin API контроллеры¶
| Контроллер | Маршрут | Методы (укрупненно) | Назначение |
|---|---|---|---|
UserManageController |
/api/admin/users |
POST, GET, POST /{id}/fire, POST /{id}/unfire, POST /{id}/sync-with-ad |
создание/удаление/увольнение, перенос задач, синхронизация |
UsersExportController |
/api/admin/users/export |
POST /excel |
выгрузка пользователей |
UsersProfilesController |
/api/admin/users/{userId}/profile |
POST |
обновление профиля |
UserAssistantsSettingsController |
/api/admin/userassistants/settngs |
GET, POST /save |
настройки заместителей |
UserNewDefaultSettingsController |
/api/admin/users/default |
GET/POST notifications, GET/POST settings |
дефолты новых пользователей |
GroupsController |
/api/admin/groups/ |
GET/POST, update, delete, membership операции |
CRUD групп, состав, иерархия, AD sync |
UserGroupSettingsController |
/api/admin/user-group-settings |
my-tasks-config, user-ui-settings, includes, reset |
управление РМГ (UserGroupSettings) |
GroupOnEntityPermissionsController |
/api/admin/permissions |
actions, get/set permissions, tsql-access-function |
матрица прав групп по сущностям |
EntityAccessController |
/api/admin/entity-access |
get/save, subcategory, allowedValueGroups |
тонкая матрица доступов |
OrgStructureController |
/api/admin/org-structure/ |
дерево, CRUD оргюнитов, связи с группами, sync | оргструктура и привязки |
Ключевые настройки¶
1. Создание пользователя¶
Где настраивается:
- автоадминка → форма add-user;
- Admin API → POST /api/admin/users;
- defaults → UserNewDefaultSettingsController.
Таблицы:
- dbo.Users;
- dbo.UsersNewDefaultSettings;
- связанные настройки в dbo.UserSettings.
Что контролируется: - обязательный набор атрибутов карточки пользователя; - применение дефолтов уведомлений/интерфейса; - первичные связи с группой/оргструктурой.
Критичные зависимости:
- дефолты читаются из users-new-default-settings и API /api/admin/users/default/*;
- после создания часто требуется отдельная настройка ролей (roleUser) и расширенных свойств (userInfoExt).
SQL-диагностика:
select top (50) *
from dbo.Users;
select top (50) *
from dbo.UsersNewDefaultSettings;
2. Профиль пользователя¶
Где настраивается:
- автоадминка → users, user-info-ext-values;
- EntityEditor → userInfoExt.json;
- Admin API → POST /api/admin/users/{userId}/profile.
Таблицы:
- dbo.Users;
- dbo.UserInfoExtValues;
- dbo.UserSettings.
Что контролируется: - ФИО и контактные поля; - доп. атрибуты карточки (в т.ч. кастомные); - профильные/персональные параметры UI.
Критичные зависимости: - набор отображаемых полей зависит от конфигурации схемы EntityEditor; - при массовом обновлении через формы и API важна согласованность типов и required-логики.
SQL-диагностика:
select top (100) *
from dbo.UserInfoExtValues;
select top (100) *
from dbo.UserSettings;
3. Увольнение пользователя (fire)¶
Где настраивается:
- Admin API → POST /api/admin/users/{userId}/fire;
- Admin API → POST /api/admin/users/{userId}/firenow;
- Admin API → POST /api/admin/users/{userId}/unfire.
Таблицы/контур:
- dbo.Users;
- история членства: dbo.GroupUsersMembership;
- сопутствующие таблицы задач/подписок (по сценарию переназначения).
Что контролируется: - queued/sync увольнение; - переназначение задач; - восстановление пользователя.
Критичные зависимости:
- увольнение и удаление пользователя — разные операции;
- при fire важно корректно задать правила по задачам и группам.
SQL-диагностика:
select top (100) *
from dbo.GroupUsersMembership;
select top (100) *
from dbo.Users;
4. Группы и иерархия¶
Где настраивается:
- автоадминка → groups, group-parents;
- EntityEditor → groupType.json;
- Admin API → /api/admin/groups/*.
Таблицы:
- dbo.Groups;
- dbo.GroupParents;
- dbo.GroupTypes.
Что контролируется: - свойства группы; - тип группы (поведение в интерфейсе/получателях); - вложенность и наследование прав.
Критичные зависимости: - вложенные группы расширяют effective-permissions; - невалидная иерархия приводит к избыточному или недостаточному доступу.
SQL-диагностика:
select top (100) *
from dbo.Groups;
select top (100) *
from dbo.GroupParents;
5. Рабочие места группы (UserGroupSettings)¶
Где настраивается:
- автоадминка → workplaces;
- Admin API → /api/admin/user-group-settings/*.
Таблица:
- dbo.UserGroupSettings (45 полей, 5 секций).
Что контролируется:
- UI/UX для группы;
- my-tasks-config и user-ui-settings;
- includes (CSS/JS) и chat-subcategories.
Критичные зависимости: - группа может переопределять пользовательские настройки; - конфликт РМГ при членстве в нескольких группах влияет на итоговый UI.
SQL-диагностика:
select top (100) *
from dbo.UserGroupSettings;
select count(*) as Cnt
from dbo.UserGroupSettings;
6. Настройки по умолчанию для новых пользователей¶
Где настраивается:
- автоадминка → users-new-default-settings;
- Admin API → /api/admin/users/default/notifications и /settings.
Таблица:
- dbo.UsersNewDefaultSettings.
Что контролируется: - стартовые уведомления; - стартовые пользовательские settings; - поведение при восстановлении уволенного пользователя.
Критичные зависимости: - изменения не мигрируют автоматически старых пользователей; - несогласованные дефолты создают дрейф конфигурации между «старыми» и «новыми» пользователями.
SQL-диагностика:
select top (100) *
from dbo.UsersNewDefaultSettings;
7. Оргструктура и должности¶
Выделено в отдельный домен: domains/org-structure/ — полная документация по слоям (business, admin, backend, database, data-flow, frontend, sync, ext-param-integration).
Где настраивается:
- автоадминка → org-structure, org-structure-type, org-structure-appointment;
- Admin API → /api/admin/org-structure/*.
Таблицы:
- dbo.OrgStructureUnit;
- dbo.OrgStructureType;
- dbo.OrgStructureAppointment.
Что контролируется: - дерево подразделений; - типизация узлов; - должности и связи с группами; - sync group-membership из оргструктуры.
Критичные зависимости: - ошибки связей unit↔group влияют на членство пользователей; - смена типа/родителя узла может менять доступность потомков в UI.
SQL-диагностика:
select top (100) *
from dbo.OrgStructureUnit;
select top (100) *
from dbo.OrgStructureType;
select top (100) *
from dbo.OrgStructureAppointment;
8. Роли (roles / powers / users)¶
Где настраивается:
- EntityEditor → roles.json, rolePowers.json, roleUser.json;
- дополнительная проверка через API прав (/api/admin/permissions, /api/admin/entity-access).
Таблицы/контур:
- dbo.Roles;
- таблицы связей ролей и полномочий;
- таблицы связей ролей и пользователей.
Что контролируется: - справочник ролей; - набор полномочий роли; - назначение ролей пользователям.
Критичные зависимости: - назначение роли без набора powers не дает ожидаемого эффекта; - роль может конфликтовать/дополняться групповыми правами.
SQL-диагностика:
select top (100) *
from dbo.Roles;
9. Доступ к доменам¶
Где настраивается:
- автоадминка → group-domain-access;
- групповой контур API (/api/admin/groups/domains).
Таблица:
- dbo.GroupDomainAccess.
Что контролируется: - привязка групп к доменам (в т.ч. AD/LDAP-контур); - разрешенная область аутентификации/синхронизации.
Критичные зависимости: - некорректный domain mapping ломает ожидания по входу/синхронизации; - требуется проверка настроек синхропрофилей.
SQL-диагностика:
select top (100) *
from dbo.GroupDomainAccess;
10. Специальные права¶
Где настраивается:
- автоадминка → special-permissions;
- API прав → /api/admin/permissions.
Таблица:
- dbo.GroupSpecialPermissions.
Что контролируется: - точечные special-actions для групп; - исключения из стандартной ролевой модели.
Критичные зависимости: - спецправо может обходить базовые ожидания UI/доступа; - проверять в связке с membership группы и entity-access.
SQL-диагностика:
select top (100) *
from dbo.GroupSpecialPermissions;
11. Синхронизация с AD/LDAP¶
Где настраивается:
- GroupsController: /api/admin/groups/ad/sync-all-groups, /domains;
- UserManageController: /api/admin/users/{userId}/sync-with-ad;
- профильные настройки групп/пользователей в админ-формах.
Контур данных: - групповые и пользовательские записи; - доменные привязки; - sync-профили интеграции.
Что контролируется: - наполнение пользователей/групп из внешнего каталога; - согласованность membership в локальной БД.
Критичные зависимости: - без корректной конфигурации домена и профиля синхронизация частично успешна; - после sync требуется сверка фактического состава групп.
SQL-диагностика:
select top (100) *
from dbo.Groups;
select top (100) *
from dbo.GroupUsersMembership;
12. Комнаты (Rooms)¶
Где настраивается:
- автоадминка → rooms.
Таблица:
- dbo.Rooms.
Что контролируется: - справочник переговорных/комнат; - использование в календарных и бронировочных сценариях.
Критичные зависимости: - дубликаты/неактивные записи приводят к ошибкам выбора комнаты в UI.
SQL-диагностика:
select top (100) *
from dbo.Rooms;
13. Рабочие места групп — детальная настройка¶
Базовая архитектура и таблицы описаны в разделе 5. Здесь — полный набор параметров и правила их взаимодействия.
Приоритет: каждое рабочее место имеет целочисленный приоритет. При членстве пользователя в нескольких группах с разными настройками применяется рабочее место с наибольшим приоритетом. Личные настройки пользователя (профиль → вкладка «Вид» → блок «Стартовая страница») имеют наивысший приоритет.
Стартовая страница¶
| Тип | Описание | Поле «Значение» |
|---|---|---|
| Портал | Открывается портальная страница | Номер портала |
| Лента | Лента задач и комментариев | — |
| Ссылка | Открывается указанная страница (только HTTPS; во фрейме с сохранением меню) | URL |
Основная панель — 7 элементов¶
Каждый элемент: Показывать / Не показывать / Не задано (наследуется от более приоритетного РМ). Управляет иконкой на основной панели и вкладкой в общем поиске.
| Элемент | При скрытии |
|---|---|
| Кнопка создания | Скрыта кнопка «Создать» |
| Календарь | Скрыта вкладка календаря в поиске |
| Лента | Скрыта вкладка ленты в поиске |
| Сотрудники | Скрыта вкладка сотрудников в поиске, результаты по профилям отсутствуют |
| Поиск | Скрыта иконка поиска |
| Выбор языка | Скрыт переключатель языка |
| Чаты | Скрыта иконка чатов |
Панель навигации¶
| Параметр | Значения |
|---|---|
| Положение | Сверху / Справа / Слева |
| Цвет | 15 вариантов: Нет / Бренд / Белый / Чёрный / Всегда белый / Всегда чёрный / Красный / Розовый / Фиолетовый / Синий / Голубой / Зелёный / Жёлтый / Оранжевый / Серый |
| Отображать всегда | Принудительно показывает панель навигации |
⚠️ Настройки положения, цвета и «Отображать всегда» применяются только для новых пользователей. Для существующих — использовать кнопки «Сбросить Положение», «Сбросить Цвет», «Сбросить Отображать всегда» после сохранения РМ.
Боковое меню — 6 блоков¶
Каждый блок: Показывать / Не показывать / Не задано.
| Блок | Спецправо с высшим приоритетом |
|---|---|
| Категории | «Не видеть блок Категории в левом меню» |
| Избранное | — |
| Отчёты | «Не видеть блок Отчеты в левом меню» |
| Почта | «Не видеть блок Почта в левом меню» |
| Пространства | — |
| Лента корп. сети | — |
⚠️ Специальные права группы имеют высший приоритет над настройками РМ для блоков Категории, Почта, Отчёты.
Критичный эффект скрытия Избранного и Категорий: - Избранное скрыто, Категории доступны → заголовок «Избранное» заменяется на «Категории», кнопка добавления избранного недоступна; - Скрыты оба блока → остаются только блоки ссылок РМ, заголовок «Избранное», кнопка добавления отсутствует; - Если в РМ не настроено ссылок → только папка «Мои задачи».
Просмотр задачи¶
Снизу справа / Во всплывающем окне. ⚠️ Только для новых пользователей; для существующих — кнопка «Сбросить Просмотр задачи».
Функции Диска¶
Один флаг управляет: пунктом «Диск» в меню сервисов, пунктом «Диск» в меню «Файлы» карточки задачи, и действиями с ДП «Файл», связанными с Диском.
Приоритет режима редактирования¶
Включает инлайн-редактирование в табличном представлении (double-click → редактирование ячейки). Пользователь может переключить режим для отдельной категории через панель инструментов табличного вида. Точечное управление — опция «Приоритетный режим таблицы» в настройках таблицы БИ.
Разрешить кастомизировать UI¶
При отключении блокируется 7 настроек интерфейса: положение/цвет шапки, формат дат, режим комментариев, блочные сообщения, режим задач, отображение имён. Остаётся только выбор темы. ⚠️ Только для новых пользователей; для существующих — кнопка «Сбросить UI-настройки».
Персональное меню¶
Видимость пункта «Табель трудозатрат»: Не задано / Показывать / Не показывать.
Профиль пользователя — 7 вкладок¶
Каждая вкладка: Не задано / Показывать / Не показывать. Вкладки: Заказчик, Исполнитель, Комментарии, Календарь, Журнал, Трудозатраты, Отчёт.
Настройки интерфейса¶
Детальный контроль — какие опции настроек интерфейса видны пользователю. При отключении всех — пункт «Настройки интерфейса» скрывается из персонального меню.
Мои задачи в избранном¶
Детальный контроль содержимого блока «Мои задачи». При отключении всех — блок скрывается.
JS/CSS вставки¶
Групповые JS/CSS-вставки применяются ко всей площадке включая навигацию. При нескольких рабочих местах применяются вставки РМ с наибольшим приоритетом.
Дополнительные категории чатов¶
Добавляет вкладки в разделе чатов для конкретных категорий. Располагаются после стандартных системных разделов.
Удаление РМ¶
Запрещено для групп с настроенными рабочими местами. Сначала удалить РМ, потом группу.
14. Избранное группы (UserLinks)¶
Форма автоадминки
favourites(таблицаdbo.UserLinks) описана в ../spaces/admin.md — там же конфигурация SPA-страницы/administration/favorites-groups. Здесь — административные правила и типы ссылок.
Общие правила: - Один набор избранного на группу; пользователь в нескольких группах видит все наборы; - Папки с одинаковым именем из разных групп объединяются (без дублирования ссылок); - Допускается только 1 уровень вложенности — папки + ссылки в них; - Пустые папки не отображаются в UI.
Блок кнопок¶
Максимум 4 кнопки. Типы объектов — те же, что у блока ссылок.
Приоритет иконок: имя иконки из spa/content-icons → иконка аватара категории → стандартная.
Блок ссылок — 14 типов¶
| Тип | Параметры |
|---|---|
| Категория | ID категории + представление: Лента, Таблица, Календарь, Сводка, Ганта, Переписка, Иерархия, Канбан, Чаты, Канал, Ресурсы, Галерея, Соц. сети (14 представлений) |
| Раздел | ID раздела + те же 14 представлений |
| Новая задача | ID категории → карточка создания задачи |
| Отчёт | ID отчёта |
| Сводный раздел | ID сводного раздела |
| Портал | ID портала |
| Ссылка | Произвольный URL |
| Смарт-отбор | ID категории (с преднастроенными смарт-выражениями) |
| Пространство | Главная страница / конкретное пространство / страница пространства |
| Диск | Главная страница / папка диска |
| Календарь | Мой календарь / Мои события / Календарь другого пользователя |
| Чат | Раздел чатов / конкретный чат |
Специальный тип «Все разделы»: linkedObjectId = null — показывает полный каталог разделов внутри блока Избранного. Позволяет разместить каталог выше личного избранного без перехода в пункт «Категории». После добавления стандартный блок «Категории» можно скрыть в РМ.
Имя группы избранного¶
Все созданные ссылки оборачиваются в именованную папку под «Мои задачи». Задаётся через меню действий группы избранного. Локализация названия папки — 10 языков (ru/en/fr/de/zh/da/ja/es/it/uz).
Кастомные счётчики¶
Таблица UserLinksCustomCounters: поля allTasksCount, newTasksCount, overdueTasksCount. Заполняются вручную (смарт-выражение/расписание). При значении 0 счётчик не отображается.
Доступ из UI¶
Администратор может перейти к настройке избранного через ПКМ на блок кнопок в пользовательском интерфейсе.
⚠️ При добавлении ссылки на категорию право «Просмотр всех задач» должно быть и у группы, и у настраивающего администратора.
15. Синхронизация AD/LDAP — параметры профиля¶
Техническая реализация синхронизации (архитектура, классы, точки входа, SID-линковка, фильтры, инвалидация токенов) описана в ../auth/ad-sync-technical-reference.md — 387 строк. Здесь — административные параметры профиля синхронизации.
⚠️ КРИТИЧНО: для каждого сервиса AD/LDAP — только одна активная настройка синхронизации.
Флаги синхронизации (10+ параметров)¶
| Параметр | Назначение |
|---|---|
| Синхронизация с AD | Включает синхронизацию по расписанию ADSyncJob |
| Данные пользователей | Синхронизация данных пользователей по маппингу |
| Названия групп | Синхронизация названий групп |
| Создание новых групп | Автосоздание групп из AD |
| Членство пользователей | Синхронизация состава групп |
| Вложенность групп | Синхронизация связей групп |
| Создавать пользователей из AD | Автосоздание новых пользователей |
| Создавать по расписанию | Автосоздание по ADSyncJob (требует указания OU) |
⚠️ Создание по расписанию возможно только при указании орг. единиц в «Организационные единицы для синхронизации из AD». Без OU — проверяются пользователи по всей оргструктуре.
Формат логинов и оргструктура¶
| Параметр | Описание |
|---|---|
| Логины в формате Domain\Nick | Необходим при нескольких доменах с совпадающими никами |
| Только орг. единиц из AD | Вкл: затираются только AD-единицы, ручные сохраняются. Выкл: все орг. единицы перезаписываются |
LDAP-фильтры¶
| Параметр | Ограничение |
|---|---|
| AD фильтр пользователей | Синтаксис LDAP-фильтров; макс. 1000 символов |
| AD фильтр групп | Синтаксис LDAP-фильтров |
Пример фильтра пользователей: (|(company=1Forma)(city=Moscow))
Защита от массовых обновлений¶
Максимально допустимое количество обновлений — при превышении синхронизация не выполняется. Можно запустить вручную.
Маппинг полей¶
Встроенные поля уже вшиты. Кастомные добавляются вручную.
⚠️ Имена атрибутов AD регистрозависимые: displayname ≠ DisplayName.
Пример маппинга: Компания=company, Отдел=department, Имя=givenName, Псевдоним=displayName, E-mail=mail.
Аватар: атрибут AD = thumbnailPhoto.
Часовой пояс: требуется отдельное поле в AD специального формата (см. TimeZones.txt); привязать в настройках маппинга.
Расширенные свойства пользователя маппируются отдельной вкладкой.
Оптимизация¶
Кастомная настройка LDAP_AdGlobalCatalogHosts (sys_user) — для ускорения загрузки дерева AD при медленном Global Catalog.
16. Типы групп¶
Полное описание в бизнес-слое: business.md. Здесь — административные параметры.
| Тип | Назначение |
|---|---|
| Организационная | Отображается в профилях и меню «Контакты» |
| Служебная | Скрыта от пользователей, для администрирования |
| Индивидуальная | Аналог служебной, состоит из одного пользователя |
| Auto managed membership | Служебная для миграции; нельзя редактировать состав, удалить, связать с орг.единицей |
Системные служебные группы: Administrators, Users, External — нельзя удалять и переименовывать.
Настраиваемые свойства типа: - Можно добавлять в адресаты - Отображать в карточке пользователя - Отображать в дереве сотрудников - Разрешить ставить отсутствие членам своей группы - Не копировать членство при копировании прав пользователя
17. Связи групп¶
Связи расширяют сферу поиска контактов и доступа к календарям. Пользователь видит во вкладке «Сотрудники» членов своих неслужебных групп + членов связанных групп.
⚠️ Связываемая группа должна быть организационной.
Администраторы и пользователи с ролью «HR-менеджер» видят всех пользователей.
18. Импорт пользователей из Excel¶
Минимальный набор полей:
| Поле Excel | Столбец Users |
Обязательность |
|---|---|---|
| Логин | Nick |
Да |
| Отображаемое имя | DisplayName |
Да |
| Полное имя (ФИО) | FullName |
Да |
| Фамилия | LastName |
Да |
| Имя | FirstName |
Да |
| Телефон | Phone |
Да (формат: 7xxxxxxxxxx) |
| Отчество | MiddleName |
Нет |
| Дата рождения | BirthDate |
Зависит от настроек |
| Почта | Email |
Зависит от настроек |
Полный список импортируемых полей — таблица Users.
Процедура: импорт через SQL Server Import Data Wizard → вставка из временной таблицы в Users. После импорта требуется генерация временных паролей и добавление в группы.
19. Обновление имён¶
Кнопка «Обновить имена» в интерфейсе администрирования — применяется после изменения настроек отображения имён (форматов, полей) для применения ко всем пользователям.
20. Журнал событий пользователя¶
Вкладка «Журнал» в карточке пользователя. Фиксируются: - Вход в систему и выход; - Изменение пароля; - Изменение профиля; - Изменение расширенных свойств; - Изменение персональных настроек отображения.
Каждая запись: дата/время, текст события, User Agent. ⚠️ Пустой User Agent — браузер не распознан или мобильное приложение без идентификатора.
По умолчанию отображается ограниченный период. Фильтр по дате — в поле над таблицей.
21. Права группы на группу¶
Полное описание и администрирование: ../permissions/admin.md. Бизнес-правила: business.md.
5 типов прав: перевоплощение, просмотр журналов, просмотр календарных событий, просмотр профилей, установка фото пользователя.
22. Профиль пользователя — поля карточки¶
Бизнес-логика полей и вкладок: business.md. Здесь — административный справочник полей.
Блок «Личное»: Логин, Пароль, ФИО, Псевдонимы (рус/англ), Язык интерфейса, Пол, Декретный отпуск, «О себе».
Блок «Рабочее»: Орг.единицы (должности, одна основная), Дата «В компании с».
Блок «География»: Часовой пояс, Страна, Город, Комната, Геолокация.
Блок «Контакты»: Мобильный (с верификацией по SMS), Рабочие телефоны (до 3), Дополнительный, Факс, IP-телефония, E-mail, Внешний e-mail, Внешнее имя, Telegram ID и ник, Facebook, WhatsApp.
Блок «Прочее»: SID (из AD), Провайдер аутентификации, Заметки, Домен пользователя, 1С GUID.
Кастомные поля: через ключ userProfileInfoExts — JobTitle, Zoom и др.
Флаги доступа к редактированию профиля: Может редактировать аватар/пароль/Личное/Рабочее/География/Контакты, Разрешить кастомизировать UI, Разрешить менять режим отображения имён, Требовать акцепта всех своих задач, Доступ к почте.
Ключевой признак «Сотрудник компании» (IsEmployee): определяет разделение на сотрудников (полный доступ) и внешних пользователей (ограниченный доступ). Настраивается в карточке пользователя.
Типичные ошибки настройки¶
| Симптом | Вероятная причина | Где проверить | SQL-диагностика |
|---|---|---|---|
| Новый пользователь создается без ожидаемых стартовых параметров | Неактуальны users-new-default-settings |
форма users-new-default-settings, API /api/admin/users/default/* |
select top (50) * from dbo.UsersNewDefaultSettings; |
| Пользователь не видит часть интерфейса после входа | Конфликт/ошибка в UserGroupSettings |
форма workplaces, API /api/admin/user-group-settings/* |
select top (50) * from dbo.UserGroupSettings; |
| После добавления в группу права не применяются | Ошибка в типе группы/вложенности | формы groups, group-parents, groupType.json |
select top (100) * from dbo.GroupParents; |
| Пользователь получил «лишние» права | Нежелательное наследование через вложенные группы | group-parents, API /api/admin/groups/{id}/users |
select top (100) * from dbo.GroupParents; |
| Увольнение не дало ожидаемого эффекта по задачам | Неверные параметры fire / не проверен перенос |
UserManageController (fire, firenow, move-tasks) |
select top (100) * from dbo.GroupUsersMembership; |
| Восстановленный пользователь «не как новый» | Дефолты изменились после изначального создания | users-new-default-settings, /api/admin/users/default/settings |
select top (50) * from dbo.UsersNewDefaultSettings; |
| Оргструктура отображается, но состав групп не совпадает | Не выполнен syncgroups или некорректные связи unit↔group |
/api/admin/org-structure/syncgroups, link-with-group |
select top (100) * from dbo.OrgStructureUnit; |
| Пользователь не видит карточку коллег в оргструктуре | Спецправа ограничивают просмотр | special-permissions, проверки в OrgStructureController |
select top (100) * from dbo.GroupSpecialPermissions; |
| Роль назначена, но полномочия не работают | Не заполнены rolePowers или некорректная привязка roleUser |
EntityEditor rolePowers.json, roleUser.json |
select top (100) * from dbo.Roles; |
| AD sync групп проходит частично | Неверные доменные/профильные настройки | /api/admin/groups/domains, /ad/sync-all-groups |
select top (100) * from dbo.GroupDomainAccess; |
| Матрица прав на сущность не применяет изменения | Изменения внесены не в тот entityType/entityId |
/api/admin/permissions/*, /api/admin/entity-access/* |
select top (100) * from dbo.Groups; |
| Комната не появляется в выборе бронирования | Запись есть в Rooms, но справочник заполнен некорректно |
форма rooms |
select top (100) * from dbo.Rooms; |
Минимальный SQL-чеклист L2/L3¶
select 'Users' as [table_name], count(*) as [cnt] from dbo.Users
union all
select 'Groups', count(*) from dbo.Groups
union all
select 'UserGroupSettings', count(*) from dbo.UserGroupSettings
union all
select 'UsersNewDefaultSettings', count(*) from dbo.UsersNewDefaultSettings
union all
select 'OrgStructureUnit', count(*) from dbo.OrgStructureUnit
union all
select 'GroupParents', count(*) from dbo.GroupParents
union all
select 'GroupDomainAccess', count(*) from dbo.GroupDomainAccess
union all
select 'GroupSpecialPermissions', count(*) from dbo.GroupSpecialPermissions
union all
select 'UserInfoExtValues', count(*) from dbo.UserInfoExtValues
union all
select 'Rooms', count(*) from dbo.Rooms;
select
c.table_schema,
c.table_name,
c.column_name,
c.data_type
from information_schema.columns c
where c.table_schema = 'dbo' and
c.table_name in (
'Users',
'Groups',
'UserGroupSettings',
'UsersNewDefaultSettings',
'OrgStructureUnit',
'OrgStructureType',
'OrgStructureAppointment',
'GroupParents',
'GroupDomainAccess',
'GroupUsersMembership',
'GroupSpecialPermissions',
'UserInfoExtValues',
'Rooms'
)
order by
c.table_name,
c.ordinal_position;
Лицензии пользователей¶
Страница AdminSPA «Пользователи → Лицензии» предоставляет администратору управление лицензиями пользователей.
Управляемые типы лицензий: - Почтовый клиент - CRM - Клиентская зона - Первая Форма (индивидуальная) - Первая Форма (конкурентная)
Фильтрация и сортировка: - Фильтры: по типу лицензии, наличию/отсутствию лицензии, статусу увольнения (включая уволенных) - Сортировка: по логину, ФИО, типу лицензии, идентификатору пользователя, email - Поддержка пагинации (Skip/Take) и полного сброса через флаг GetAll
Операции с лицензиями:
- Выдать (grant) — выдаёт пользователю лицензию указанного типа
- Отозвать (revoke) — отзывает лицензию; операция идемпотентна (если лицензии не было, состояние не меняется)
- Сменить тип (change) — атомарно меняет тип лицензии: снимает старую и выдаёт новую в одной транзакции, без промежуточного состояния «без лицензии»
- Массовые операции (bulk) — Grant / Revoke / Change над списком пользователей
Сводные счётчики:
Endpoint /api/admin/users/licenses/counters возвращает для каждого управляемого типа лицензии количество приобретённых и использованных. Используется для обновления заголовка страницы.
Источник данных: таблица dbo.UserClientAccessLicense.
Связанные документы¶
docs/domains/users-and-groups/backend.md— backend-архитектура и сервисы доменаdocs/domains/users-and-groups/data-flow.md— E2E-диагностика и failure pointsdocs/platform/backend/admin-architecture.md— общая архитектура механизмов администрированияdocs/reference/database/dbadmin-forms-map.md— карта форм автоадминки и EntityEditordocs/guides/admin-md-template.md— шаблон этого документа