RealHelpDesk API
RealHelpDesk API — это REST API для построения системы управления заявками или внутренней системы обработки запросов.
На данный момент реализован MVP (Minimum Viable Product):
- Регистрация, аутентификация, авторизация, верификация email пользователя, восстановление пароля.
- Создание порталов - точки в рамках которых формируется тематика заявок.
- Создание заявок в рамках портала.
- Создание сообщений в рамках заявки.
- Создатель портала может предоставить доступ к нему другим пользователям.
- Email-оповещения.
- Выбор уровня ограничения оповещений.
- Реализован поиск заявки (в рамках указанного временного промежутка, содержимому заявки, ФИО автора).
- Проверка лимитов пользователя (разрешенное кол-во порталов, кол-во общих пользователей порталов).
- Лимиты на попытки восстановления доступа.
- Капча.
Авторизация и безопасность
Используются JWT-токены + HTTP cookies для аутентификации и авторизации (токены передаются через куки) пользователей. Каждый входящий запрос проходит через фильтр JwtAuthFilter, который:
- Пропускает открытые эндпоинты (например,
/auth/login) из белого списка. - Извлекает access-токен из cookies
- Расшифровывает и проверяет access-токен с помощью
ValidTokenService - Устанавливает аутентификацию в
SecurityContextHolder. - Помечает ошибки токена (истёкший токен, некорректный формат и т.д.) через доп. заголовки.
Структура проекта
- Core - конфигурация (spring security/CORS etc.), глобальные исключения, фильтры, токены, пользователи, почтовые оповещения, пагинация, проверка лимитов, контроль доступа в рамках контроллера.
- Domain - базовые entity, репозитории и сервисы.
- Feature - управление порталами, заявками, сообщениями, пользователями.
Запуск проекта
- Поднять postgres:
help-utils/docker/docker-compose.postgres15.yml - Поднять smtp4dev:
docker-compose.smtp4dev.yml source init.sh-
init.shсобирает проект (Maven), генерирует самоподписанный сертификат (gen-selfsigned-keystore.sh) и устанавливает переменные окружения (setup-env-vars.sh), используемые для конфигурации проекта.
Логгирование (logback-spring.xml)
-
/log/realHelpDesk-**.logзапросы -
/log/application-**.logприложение
Тестирование
-
postman_collection.json- Коллекция для импорта в Postman.