An open API service indexing awesome lists of open source software.

https://github.com/pomxark/test_task_laravel_9

Тестовое задание. Регистрация. Авторизация по JWT. Фильтрация не предопределенных свойств
https://github.com/pomxark/test_task_laravel_9

docker dockerfile jwt jwt-authentication jwt-token laravel laravel-passport laravel8

Last synced: 4 months ago
JSON representation

Тестовое задание. Регистрация. Авторизация по JWT. Фильтрация не предопределенных свойств

Awesome Lists containing this project

README

          

Laravel Framework 9.52.15 (node v20.3.0)

**Тестовое задание для PHP разработчика**

На вакансию: https://khabarovsk.hh.ru/vacancy/76497462?hhtmFrom=chat

- Разработать API backend на фреймворке Laravel 9.
- В качестве БД использовать MySQL или PostgreSQL.

Требуемый функционал:
- **Регистрация**:
* Поля:
- ФИО,
- email (уникальный),
- телефон (уникальный),
- пароль,
- подтверждение пароля.

* Условия:
- Все поля обязательны.
- Пароль должен быть не менее 6 символов, только латиница, минимум 1 символ верхнего регистра, минимум 1 символ нижнего регистра, минимум 1 спец символ $%&!:.
- Телефон должен удовлетворять маске: начинаться с +7 после чего идет 10 цифр.


- **Авторизация**:
* Поля:
- email или телефон (одно поле),
- пароль
* Условия:
- Для авторизованных пользователей доступен “каталог товаров”.
- Идентификация пользователя должна происходить по *Bearer* токену.


- **Каталог товаров**
* Поля (Product):
- название,
- цена,
- количество.
- Свойства (опции) товара: название и значение
* Условия:
- Только для авторизованных
- Свойства товара должны быть произвольными т.е. заполняться в отдельной таблице БД (например: color / red; color / white; weight / 1000, weight / 1250)
- Реализовать фильтрацию списка товаров с множественным выбором, например **GET** ***/products?properties[color][]=red&properties[color][]=white&properties[weight][]=1000***

* Методы доступные неавторизованным пользователям: регистрация, авторизация
* Методы доступные авторизованным пользователям: список товаров (“каталог товаров”) пагинированных по 40

### Запуск
- cp .env.example .env
- php php composer_2.phar update
- npm i

### demo-deploy (all in one)
- sudo rm -r docker
- php artisan passport:keys
- php artisan optimize
- docker build -t test_task_laravel_9 .
- docker run -d -p 8000:80 --name test_task_laravel_9 test_task_laravel_9