Проект представляет собой backend для мессенджера. Пользователи могут регистрироваться, отправлять друг другу сообщения, добавлять в друзья.
- Spring Web
- Spring WebSockets
- Spring Data Jpa
- Spring Security
- Spring Validation
- Spring Mail
- Spring Boot
- Postgresql
- Swagger
- Liquibase
- Mapstruct
- Maven
- Docker
Были выполнены все доп задания
Для корректной работы приложения необходимо передать environment параметры. Для настройки Spring Mail используются следующие параметры:
MAIL_HOST
MAIL_PORT
MAIL_USERNAME
MAIL_PASSWORD
STARTTLS_ENABLE
Также в проекте есть бин EmailService
, который нуждается в настройке.
Его параметры:
-
EMAIL_SERVICE_DOMAIN
- Домен текущего сервера. Можно не указывать. По умолчанию равняетсяlocalhost
. -
EMAIL_SERVICE_PORT
- Порт текущего сервера. Можно не указывать. По умолчанию равняется8080
-
EMAIL_SERVICE_USE_HTTPS
- Булево значение, отвечает за использование протокола https. Можно не указывать. По умолчанию равняется false.
Для настройки бина JwtService
необходимо указать параметр
JWT_SECRET_KEY
- Ключ для подписи токенов. Можно не указывать,
тогда будет использоваться ключ по умолчанию.
В целях тестирования можно оставить значения по умолчанию.
Запустить приложение можно командами mvn clean package
, затем docker compose up
,
добавив environment переменные
в
сервисе app файла compose.yaml
.
Эндпойнты разбиты по трем категориям:
- auth - Для регистрации, авторизации и прочих операций, связанных с безопасностью.
- user - Для операций, связанных с пользователями.
- friend - Для операций, связанных со списками друзей.
POST /auth/sign_up
- регистрация нового пользователя.
В тело подается json вида:
{
"username": "user",
"password": "passwd",
"email": "[email protected]",
"name": "alex",
"surname": "johnson"
}
В ответе передается header Authorization
с jwt токеном.
POST /auth/login
- вход в аккаунт.
В тело подается json вида:
{
"username": "user",
"password": "passwd"
}
В ответе передается header Authorization
с jwt токеном.
POST /auth/logout
- выход из аккаунта.
PUT /user/edit
- редактировать профиль текущего пользователя.
В тело подается json вида:
{
"name": "alex",
"surname": "johnson",
"email": "[email protected]"
}
Если какой-то из параметров не был передан, это значение не изменится в профиле пользователя. Если email был изменен, на почту будет выслано письмо для подтверждения нового email.
PUT /user/edit_creds
- редактировать данные для логина у текущего пользователя.
В тело подается json вида:
{
"username": "user",
"password": "passwd"
}
При запросе на этот эндпойнт будет выполнен разлогин.
POST /user/send_email
- отправить письмо для подтверждения почты.
POST /user/disable
- отключить аккаунт пользователя. На почту пользователя отправляется ссылка для восстановления аккаунта, действующая в течение месяца.
GET /user/verify_email/{token}
- подтвердить email.
GET /user/enable/{token}
- восстановить аккаунт пользователя.
POST /friends/add/{username}
- добавить пользователя в список друзей текущего пользователя.
GET /friends/get
- получить список друзей текущего пользователя.
GET /friends/get/{username}
- получить список друзей выбранного пользователя.
DELETE /friends/remove/{username}
- удалить выбранного пользователя из списка друзей текущего пользователя.
POST /friends/hide
- скрыть список друзей текущего пользователя. Другие пользователи не смогут воспользоваться эндпойнтомGET /friends/get/{username}
для получения его списка друзей.
POST /friends/open
- открыть список друзей текущего пользователя.
GET /swagger-ui/index.html
- swagger ui
Обмен сообщениями реализован через WebSockets по пути /chat/{username}
.