Обязательная часть выполнена вся.
Сначала запустить необходимые сервисы с помощью Docker Compose, затем запустить Gradle задачу bootRun.
- Автораизация по JWT с Refresh токенами
- Spring Security
- Хэширование паролей
- Разлогин
- API для изменения информации о пользователе
- API для изменения пароля
- История сообщений, отправка сообщений с проверкой на существование пользователя
- Документирование через Swagger
- Была использована БД PostgreSQL
Этого не требовалось, но есть немного валидации, например у email на формат email, а также у некоторых строковых полей на непустоту.
Не удалось проверить работу мессенджера на веб-сокетах, только с помощью REST API. При это эндпоинты для сокетов есть.
Подтверждение через письмо на почту.
Регистрация пользователя. Запрос возвращает JWT токен.
Ожидаемый JSON запроса:
{
"first_name": "string",
"last_name": "string",
"email": "string",
"nickname": "string",
"password": "string"
}Ожидаемый JSON ответа:
{
"access_token": "string",
"refresh_token": "string"
}Получение нового токена по рефреш токену. Запрос возвращает JWT токен.
Ожидаемый JSON ответа:
{
"access_token": "string",
"refresh_token": "string"
}Логин пользователя. Запрос возвращает JWT токен.
Ожидаемый JSON запроса:
{
"email": "string",
"password": "string"
}Ожидаемый JSON ответа:
{
"access_token": "string",
"refresh_token": "string"
}Отправка сообщения.
Ожидаемый JSON запроса:
{
"recipient_id": 0,
"content": "string"
}Ожидаемый JSON ответа:
{
"access_token": true
}Получение сообщений с пользователем.
Ожидаемый JSON ответа:
{
"data": [
{
"content": "string",
"sender": "string",
"recipient": "string",
"sender_id": 0,
"recipient_id": 0
}
]
}Изменение пароля.
Ожидаемый JSON запроса:
{
"currentPassword": "string",
"newPassword": "string",
"confirmationPassword": "string"
}Ожидаемый JSON ответа:
{
"success": true
}Удаление пользователя.
Ожидаемый JSON ответа:
{}Изменение информации о профиле.
Ожидаемый JSON запроса:
{
"firstName": "string",
"lastName": "string"
}Получить информацию о текущем пользователе.
Ожидаемый JSON ответа:
{
"first_name": "string",
"last_name": "string",
"id": 0
}Выход пользователя (стандартные средства Spring Security).