Данный проект демонстрирует работу системы управления задачами и реализует следующие функциональные возможности системы:
- Создание пользователей и генерация токенов для аутентификации с помощью JWT
- Доступ к методам API по JWT
- Создание и просмотр задач пользователями
- Изменение задачи, установку исполнителя задачи, удаление задачи автором задачи
- Изменение статуса задачи исполнителем задачи
- Добавление комментария к задаче
- Документация OpenAPI, Swagger
Загрузите проект из репозитория
# Создать jar файл
./gradlew bootJar
# Подготовить сервисы
docker compose build
# Запустить сервисы
docker compose up
*При запуске приложения идет заполнение базы данных тестовыми данными.
Откройте http://localhost:8081/swagger-ui/index.html
Ряд эндпойнтов требует аутентификации пользователя. В Swagger UI добавлена кнопка Authorize для ввода сгенерированного токена в поле Bearer Token.
Для получения токена аутентификации вы можете использовать уже созданного пользователя с email [email protected]
и паролем 123
или создать нового.
# Получение токена аутентификации и других данных пользователя
POST http://localhost:8081/api/auth/[email protected]@gmail.com&password=123
В теле ответа скопируйте поле token и вставьте его в поле Bearer Token. Теперь можно выполнять методы, для которых необходима аутентификация.
*Эндпойнт для выхода удалит рефреш токен из базы данных, но оставит Bearer Token в заголовке запросов, поэтому вы все еще сможете выполнять запросы требующие аутентификации, пока действует токен аутентификации.
# Остановить сервисы
Ctrl + C
# Остановить и удалить контейнеры
docker compose down
Работа с пользователями
Новый пользователь
POST /api/auth/register
Вход (генерация токенов)
POST /api/auth/signin
Обновить токены
POST /api/auth/refresh-token
Выход *(доступ только по токену)
POST /api/auth/logout
Менеджер задач *(доступ только по токену)
Новая задача
POST /api/management/task/new
Новый комментарий к задаче
POST /api/management/comment/new/{taskId}
Задачи, где автором является текущий пользователь
GET /api/management/tasks/author
Задачи, где автором является пользователь с указанным email
GET /api/management/tasks/author/{email}
Задачи, где исполнителем является текущий пользователь
GET /api/management/tasks/executor
Задачи, где исполнителем является пользователь с указанным email
GET /api/management/tasks/executor/{email}
Обновление задачи *(доступ только для автора)
PUT /api/management/task/update/{id}
Добавление/обновление исполнителя задачи *(доступ только для автора)
PUT /api/management/task/update/executor
Обновление статуса задачи *(доступ только для автора и исполнителя)
PUT /api/management/task/update/status
Удаление задачи *(доступ только для автора)
DELETE /api/management/task/delete/{id}