Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система управления задачами с поддержкой JWT

Этот проект представляет собой систему управления задачами с поддержкой JWT-аутентификации и различными уровнями доступа. Включает два компонента: backend на базе Spring Boot и PostgreSQL для хранения данных. Для удобства запуска используется Docker Compose.


Стек технологий

  • Java 17
  • Spring Boot
  • Spring Security
  • Spring Data JPA
  • Spring AOP
  • Hibernate Validator
  • Liquibase
  • Springdoc OpenAPI
  • Swagger
  • PostgreSQL
  • MapStruct
  • Lombok
  • JUnit 5
  • Testcontainers

Функции

  • Регистрация нового пользователя.
  • Аутентификация пользователя с получением JWT токена.
  • Создание, обновление, получение и удаление задач.
  • Фильтрация задач по различным параметрам (например, автору, исполнителю, статусу, приоритету).
  • Добавление и удаление комментариев к задачам.
  • Управление задачами с разными правами доступа для пользователей и администраторов.

Эндпоинты API

1. Аутентификация и регистрация (AuthController)

  • POST /auth/sign-up

    • Описание: Регистрация нового пользователя.
    • Пример запроса:
      {
        "username": "user1",
        "password": "password123",
        "email": "user1@example.com"
      }
    • Ответ:
      {
        "token": "jwt_token_here"
      }
  • POST /auth/sign-in

    • Описание: Аутентификация пользователя.
    • Пример запроса:
      {
        "username": "user1",
        "password": "password123"
      }
    • Ответ:
      {
        "token": "jwt_token_here"
      }

2. Управление задачами для пользователя (UserController)

  • POST /user/tasks

    • Описание: Создание задачи.
    • Пример запроса:
      {
        "title": "Новая задача",
        "description": "Описание задачи",
        "priority": "HIGH"
      }
    • Ответ:
      {
        "id": 1,
        "title": "Новая задача",
        "priority": "HIGH",
        "status": "PENDING"
      }
  • GET /user/tasks/{taskId}

    • Описание: Получение задачи по ID.
    • Ответ:
      {
        "id": 1,
        "title": "Новая задача",
        "description": "Описание задачи",
        "status": "PENDING"
      }

3. Управление задачами для администратора (AdminController)

  • POST /admin/tasks

    • Описание: Создание новой задачи.
    • Пример запроса:
      {
        "title": "Задача для администратора",
        "description": "Описание задачи",
        "priority": "HIGH"
      }
    • Ответ:
      {
        "id": 2,
        "title": "Задача для администратора",
        "priority": "HIGH",
        "status": "PENDING"
      }
  • DELETE /admin/tasks/{taskId}

    • Описание: Удаление задачи.
    • Ответ:
      {
        "message": "Задача удалена"
      }

Swagger UI

Для удобства работы с API, вы можете использовать Swagger UI. Просто откройте браузер и перейдите по следующему адресу, чтобы ознакомиться с документацией API и протестировать все эндпоинты:

📌 Требования к запуску

Перед тем как начать, убедитесь, что у вас установлены следующие компоненты:


🚀 Шаги для локального запуска проекта

1️⃣ Клонирование репозитория

Клонируйте репозиторий на вашу локальную машину:

git clone <url-вашего-репозитория>
cd <папка-проекта>

2️⃣ Использование переменных окружения

По умолчанию, все переменные уже заданы. Однако, при необходимости, их можно переопределить с помощью файла .env или передав при запуске Docker.

🔹 Переопределение через .env

Создайте файл .env в корне проекта и добавьте в него следующие параметры:

SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/tmsdb
SPRING_DATASOURCE_USERNAME=userName
SPRING_DATASOURCE_PASSWORD=P@ssw0rd
JWT_SECRET=357638792F423F4428472B4B6250655368566D597133743677397A2443264629
JWT_EXPIRATION=86400000
JWT_TOKEN_PREFIX=Bearer
JWT_HEADER_STRING=Authorization
ADMIN_USERNAME=Admin
ADMIN_PASSWORD=Admim@*1
ADMIN_EMAIL=admin_mail@email.com

🔹 Переопределение через Docker Compose

Можно передавать переменные прямо в командной строке:

SPRING_DATASOURCE_URL=jdbc:postgresql://custom-db:5432/tmsdb docker-compose up -d --build

ℹ️ Примечание: Если .env не будет создан и переменные не переданы вручную, приложение возьмет значения по умолчанию из application.yml.


3️⃣ Запуск контейнеров с помощью Docker Compose

Запустите приложение с помощью Docker Compose:

docker-compose up -d --build
  • Флаг -d запускает контейнеры в фоновом режиме.
  • Флаг --build пересобирает контейнер при изменении кода.

4️⃣ Проверка работы приложения

После успешного запуска, убедитесь, что сервис работает:

  • Backend API будет доступен по адресу: http://localhost:8080

  • Swagger UI http://localhost:8080/swagger-ui

  • PostgreSQL будет работать на порту 5432.

  • Администратор регистрируется при запуске приложения(username и пароль в переменных окружения).


5️⃣ Остановка контейнеров

Чтобы остановить и удалить контейнеры, выполните:

docker-compose down

Если нужно удалить также созданные тома (данные БД):

docker-compose down -v

🔄 Альтернативный запуск без Docker

Если хотите запустить проект без Docker, выполните следующие шаги:

  1. Установите PostgreSQL локально и создайте базу данных tmsdb.
  2. При необходимости, переопределите переменные окружения при запуске.
  3. Запустите Spring Boot-приложение:
SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/tmsdb SPRING_DATASOURCE_USERNAME=userName SPRING_DATASOURCE_PASSWORD=P@ssw0rd ./mvnw spring-boot:run

ℹ️ Примечание: Если переменные окружения не переданы, будут использоваться значения по умолчанию из application.yml, где localhost уже установлен.


✅ Заключение

Теперь у вас есть готовая система управления задачами с поддержкой JWT-аутентификации, работающая как в контейнерах, так и локально. 🚀

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages