Обработчик данных дилеров различных форматов.
Возможности:
- регистрация пользователй с подтверждением через электронную почту;
- авторизация пользователей с различными ролями;
- восстановление пароля;
- управление пользователями через консоль;
- обработка файлов формата xml, yaml, json и загрузка их в базу данных, следующим образом:
- формат данных заводиться один раз;
- возможны добавление или удаление полей, в случае если в выгрузке нет поля значит оно удаленно.
Используемые технологии:
- PHP 7.4
- Symfony 5.2
- PHPUnit
- RabbitMQ
- Docker
- Docker-compose
- Git
Требования:
- соблюдение принципов SOLID
- использование паттерна Dependency Injection
- код должен соблюдать PSR
- документация Swagger
- бизнес логика должна быть выделена в специальный сервисный слой Clear Architecture
- в бизнес логике должен использоваться механизм наследования и обработки исключений
- должен использоваться паттерн Repository
- код должен быть задокументирован
- авторизация должна происходить через JWT
- для разворачивание должен использоваться docker, docker-compose
- отправка писем должна быть асинхронной для этого требуется использовать RabbitMQ
- поддержка XDebug
- для отправки сообщений должен использоваться паттерн Observer
- Создать ключи для oauth2 в директории проекта docker/keys:
openssl genrsa -out private.key 2048 &&\
openssl rsa -in private.key -pubout -out public.key
- Запустить контейнеры:
$ docker-compose up --build -d- Выполнить установку зависимостей в контейнере php-fpm:
$ composer i- Создать базу данных:
$ ./bin/console doctrine:database:create- Выполнить миграции базы данных в контейнере php-fpm:
$ ./bin/console doctrine:migration:migrate- Выполнить обновление базы данных для работы компонента авторизации
$ ./bin/console doctrine:schema:update --force- Сгенерировать client_id и client_secret
$ ./bin/console trikoder:oauth2:create-client- Запустить обработчик события для отправки писем
$ ./bin/console rabbitmq:consumer-
Развернуть окружение из раздела разворачивание проекта.
-
Создать структуры для тестовой базы данных, выполнить из контейнера php-fpm:
$ php bin/console doctrine:schema:create- Выполнить тесты
$ php vendor/bin/phpUnit- Документация API
- Технический долг
- Postman
- Swagger для просмотра необходимо развернуть проект (создание отдельного файла занесено в тех. долг)