R

RealHelpDesk

REST API для построения системы управления заявками или внутренней системы обработки запросов.

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 - управление порталами, заявками, сообщениями, пользователями.

Запуск проекта

  1. Поднять postgres: help-utils/docker/docker-compose.postgres15.yml
  2. Поднять smtp4dev: docker-compose.smtp4dev.yml
  3. source init.sh
  4. init.sh собирает проект (Maven), генерирует самоподписанный сертификат (gen-selfsigned-keystore.sh) и устанавливает переменные окружения (setup-env-vars.sh), используемые для конфигурации проекта.

Логгирование (logback-spring.xml)

  • /log/realHelpDesk-**.log запросы
  • /log/application-**.log приложение

Тестирование

  • postman_collection.json - Коллекция для импорта в Postman.