Тестовое задание

Описание:

Сервис позволяет:

  1. Регистрировать пользователя (отправителя сообщений)
  2. Осуществлять аутентификацию и авторизацию пользователя по jwt токену
  3. Сохранять сообщения пользователя в базе данных
  4. Показывать историю сообщений пользователя

Проект выполнен с использованием Spring Boot, Spring Security, PostgreSQL

В базе данных созданы две sql таблицы person - отправители и message - сообщения.

Регистрация пользователя

Для регистрации нового пользователя необходимо по адресу http://localhost:8091/auth/registration сделать HTTP POST запрос вида:

{
    "name": "имя отправителя",
    "password": "пароль"
}

Этот эндпоинт проверяет добавляет пользователя в БД, создает jwt-токен, в токен записывает данные: name: "имя отправителя" и отправляет токен в ответ, тоже json вида:

{
    "token": "тут сгенерированный токен"
}

Аутентификация пользователя

Для аутентификации существующего пользователя необходимо по адресу http://localhost:8091/auth/login сделать HTTP POST запрос вида:

{
    "name": "имя отправителя",
    "password": "пароль"
}

Этот эндпоинт проверяет пользователя и его пароль по БД, создает jwt-токен, в токен записывает данные: name: "имя отправителя" и отправляет токен в ответ, тоже json вида:

{
    "token": "тут сгенерированный токен"
}

Сохранение сообщений

Для сохранения сообщения от пользователя необходимо по адресу http://localhost:8091/message сделать HTTP POST запрос вида:

{
    "name":       "имя отправителя",
    "message":    "текст сообщение"
}

В заголовках необходимо указать Bearer токен, полученный из эндпоинта выше (между Bearer и полученным токеном должно быть нижнее подчеркивание). В случае успешной проверки токена, полученное сообщение сохраняется в БД.

История сообщений

Если по адресу http://localhost:8091/message пришло сообщение вида:

{
    "name":       "имя отправителя",
    "message":    "history 10"
}

В случае успешной проверки токена отправитель получит 10 последних сообщений из БД. Можно указать необходимое количество сообщений.

Для проверки работоспособности программы приложен файл с curl запросами - curl.txt. Команды для создания таблиц БД в файле schema.sql