Перейти к основному содержимому

Пользователи и роли

Роли

РольОписание
USERЗарегистрированный покупатель. Каталог, оформление заказов, личный кабинет
EDITORКонтент-редактор. Баннеры, преимущества, отзывы, медиатека, категории (чтение/настройка)
MANAGERМенеджер. Всё, что у EDITOR + заказы и заявки с сайта
ADMINПолный доступ ко всем разделам, включая товары, пользователей и настройки
SUPER_ADMINРасширенный администратор. Дополнительно — управление прайсами и пополнениями лицензии

Точные правила доступа по эндпоинтам — в разделе Безопасность.

Регистрация и вход

Регистрация доступна через /api/v1/auth/register (публичный эндпоинт). Новый пользователь получает роль USER.

POST /api/v1/auth/register
Body: { name, email, password }
→ Возвращает JWT-токен сразу после регистрации

POST /api/v1/auth/login
Body: { email, password }
→ Возвращает JWT-токен

Токен действует 24 часа. Хранится в localStorage под ключом dm_shop_token.

Управление профилем

Пользователь может самостоятельно:

PUT /api/v1/auth/profile
Body: { name, phone }

PUT /api/v1/auth/change-password
Body: { currentPassword, newPassword }

Управление пользователями в Админ-панели

Страница /admin/users — список всех пользователей.
Страница /admin/users/{id} — редактирование пользователя.

Создание пользователя (ADMIN)

POST /api/v1/admin/users
Body: { name, email, password, role, phone }

Изменение роли

PUT /api/v1/admin/users/{id}
Body: { name, email, role, phone }

Удаление пользователя

DELETE /api/v1/admin/users/{id}

История заказов пользователя

GET /api/v1/admin/users/{id}/orders

Обращения клиентов (Contact Requests)

Форма обратной связи доступна без авторизации:

POST /api/v1/contacts
Body: { name, phone, email, message }

Защита от спама через SpamProtectionService — ограничение количества обращений с одного IP.

Обработка обращений

Страница /admin/contacts:

СтатусОписание
NEWНовое, не прочитанное
READПрочитано менеджером
IN_PROGRESSВ работе
CLOSEDЗакрыто (вопрос решён)
PUT /api/v1/admin/contacts/{id}/status
Body: { "status": "IN_PROGRESS" }

PUT /api/v1/admin/contacts/{id}/notes
Body: { "notes": "Позвонили, ответ дан" }

Защита от спама (SpamProtectionService) ограничивает число обращений с одного IP/телефона; устаревшие записи счётчика очищаются раз в час.

Хранение паролей

Пароли хранятся только в виде BCrypt-хешей — исходный пароль восстановить невозможно. При «сбросе» пароля администратор устанавливает новый пароль, который будет захеширован при сохранении.