В этом задании нужно будет доработать Spring Boot приложение реализовав нужный функционал. Шаблон приложения скачайте по ссылке на Github. Для общения с приложением рекомендую воспользоваться Postman'ом чтобы не тратить время на написание фронтенда.
- Реализуйте функционал регистрации. Пользователь должен иметь возможность зарегистрироваться, отправив соответствующий запрос на backend, либо при помощи OAuth2 если его аккаунт не был создан.
- Реализуйте функционал refresh-токена: при авторизации пользователя давайте ему 2 ключа с разным временем жизни. Первый - 30 минут (access_token), второй - 30 дней - refresh_token. Создайте эндпоинт, принимающий refresh_token в теле запроса и возвращающий новую пару access и refresh токенов.
- Создайте тестовые приложения OAuth2 для Google, Facebook или Github на выбор. Впишите их clientId и secret в настройки приложения. Убедитесь что они работают. Никогда не комитьте clientId и secret в репозиторий, оставьте вместо них плейсхолдеры наподобие {PROVIDER_NAME_CLIENT_ID}. Пришлите clientId и secret настроенного приложения в сообщении к домашке. Не используйте нигде больше эти id и secret, когда понадобится еще раз создать авторизацию OAuth2. Лучше создайте новое приложение или перегенерируйте secret.
- Сделайте так, чтобы только владелец отеля или администратор мог изменять описание отеля, а так же удалять его.
- Реализуйте возможность сменить пароль.
- Реализуйте сброс пароля по типу "Забыл пароль". Флоу должен быть следующим:
- Отправляется запрос с почтой пользователя на эндпоинт. Для простоты, отправлять на почту ничего не нужно: в консоль выводится токен, который позже будет использован для сброса пароля.
- Запрос с новым паролем и токеном отправляется на сервер, если всё ок - пароль меняется.
- Подключите Spring Boot Actuator и дайте к нему доступ только администраторам.
- Реализован ли функционал.
- Насколько корректно распределена логика по слоям приложения (контроллер, сервис, репозиторий).
- Правильность именования методов/переменных/классов. Чистота кода. Принцип DRY.
Вы можете добавлять в сигнатуры эндпоинтов свои аргументы, но не убирайте те, что там уже присутствуют. Так же не меняйте методы (GET, POST, PATCH, etc.) и пути эндпоинтов. Для того чтобы не потеряться в проекте, вы можете навигироваться при помощи todo, оставленных в коде