RealHelpDesk API

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

На данный момент реализован MVP (Minimum Viable Product):

  • Пользователи могут регистрироваться и авторизовываться.
  • Пользователь может создавать порталы — входные точки приёма заявок.
  • Внутри портала, пользователями создаются заявки (описывающие проблему или запрос).
  • К каждой заявке можно добавлять сообщения.

Авторизация и безопасность

Используются JWT-токены для аутентификации и авторизации пользователей. Каждый входящий запрос проходит через фильтр JwtAuthFilter, который:

  • Пропускает открытые эндпоинты (например, /auth/login) из белого списка.
  • Извлекает access-токен из заголовка Authorization: Bearer <token>.
  • Расшифровывает и проверяет access-токен с помощью ValidTokenService
  • Устанавливает аутентификацию в SecurityContextHolder.
  • Помечает ошибки токена (истёкший токен, некорректный формат и т.д.) через доп. заголовки.

Структура проекта

  • Core - конфигурация, глобальные исключения, фильтры, токены, пользователи.
  • Domain - базовые entity, репозитории и сервисы.
  • Feature - управление порталами, заявками, сообщениями, авторизацией и т.д.

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

  1. Задать значение для jwt.secret-for-gen-jwt в application.properties. Это должен быть HMAC-ключ длиной не менее 256 бит, закодированный в Base64. Получить его можно так: openssl rand -base64 32
  2. Поднять postgres с помощью docker-compose.yaml в корне проекта:
  3. Запустить через Maven [spring-boot:run]

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

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

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

  • postman_collection.json - Коллекция для импорта в Postman.
  • После регистрации вручную вставьте полученные accessToken и refreshToken в переменные окружения(Variables) Postman.