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

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

Роли​

РольОписание
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-хешей — исходный пароль восстановить невозможно. При «сбросе» пароля администратор устанавливает новый пароль, который будет захеширован при сохранении.