Project

General

Profile

Actions

Task #6130

open

Пользователи: пакетная загрузка из Excel с ролями и выгрузкой паролей

Added by Redmine Admin about 6 hours ago. Updated about 6 hours ago.

Status:
New
Priority:
Normal
Assignee:
-
Start date:
08/26/2026
Due date:
% Done:

0%

Estimated time:

Description

Страница для суперпользователя: загрузка пользователей пачкой из Excel через существующий эндпоинт создания пользователя, с возвратом файла сгенерированных паролей.

Столбцы файла: № | Фамилия | Имя | Отчество | Организация | Роль | Телефон | Почта

Реализовано (6a8a048), маршрут /users/batch:

  • users/common/roles.ts — справочник ролей (Исполнитель, Заявитель, ЦИК, ultra) и нормализация значения из файла с поддержкой синонимов. Раньше роли были зашиты инлайном в select формы редактирования.
  • users/batch/passwords.ts — генерация паролей через crypto.getRandomValues, алфавит без похожих символов (0/O, 1/l/I), гарантированно есть строчная, заглавная и цифра.
  • users/batch/UsersBatchUploadPage.tsx — скачивание шаблона (с отдельным листом-справочником организаций), предпросмотр с построчной валидацией, последовательное создание с прогрессом «N из M», экран результата и выгрузка файла с паролями.

Валидация до отправки: обязательные Фамилия / Имя / Почта, формат почты, роль строго из справочника, организация должна находиться в справочнике по названию (сопоставление без учёта регистра, кавычек и лишних пробелов). Отдельно показываются дубли почты внутри файла. Некорректные строки можно удалить из предпросмотра, загружаются только валидные.

Доступ: страница и кнопка входа на неё видны только при role === "ultra".

Связь с ролями. Валидация роли закрывает тот же класс проблем, из-за которого появлялись пользователи с ролью user без прав: значение вне справочника не пройдёт импорт.

На согласование / доработку:

  • Пароли отдаются файлом в открытом виде — на экране результата есть предупреждение сохранить его в защищённом месте и удалить. Повторно получить пароли нельзя, только сбросить.
  • Эндпоинт создания пользователя вызывается по одному в цикле, отката нет: если часть строк упала, созданные остаются созданными. В файле результата у каждой строки проставлен статус и текст ошибки.
  • Письма с доступами не отправляются — рассылка на стороне оператора.
Actions

Also available in: Atom PDF