Skip to content

ILugaro/TypeScript-Node-TypeORM-JWT-docker

Repository files navigation

# TypeScript-Node-TypeORM-JWT-docker
Тестовое задание REST API сервиса автомоек.

Фреймворк Express, авторизация посредством JWT.
БД PostgreSQL (TypeORM)

Краткое описание функционала сервиса
Сервис автомоек, где должны быть следующие возможности:
Пользователь может зарегистрироваться, затем авторизоваться по номеру телефона(или логину) и паролю. Необходимо реализовать JWT аутентификацию.
Пользователь может добавить свой автомобиль в систему (марка, название, гос.номер, фотография). У пользователя может быть несколько автомобилей.
Затем, пользователь приезжает на мойку и может выбрать место для мойки (бокс). У бокса есть только номер (A1, A2, B1…)
После выбора бокса создается “Посещение”, в котором указаны пользователь, машина и бокс. Через 1 час бокс должен освобождаться автоматически, либо раньше, по запросу пользователя.

Реализованы роли клиента и администратора. Администратор способен действовать от имени любого пользователя, а также просматривать скрытую от клиентов информацию.

Сущности:
Пользователь
Машина
Бокс
Посещение

Описание REST запросов:
(Файл postman в соответствующей папке)

URL: /api/user
POST(/) - добавление нового пользователя
    Параметры:
    password
    phone
    login
    role - c (client, по умолчанию), a (admin)

POST(/login) - Basic авторизация для получения JWT токена.
    Параметры:
    method - может быть "login"(по умолчанию) или "phone", определяет что используется в качестве логина

GET(/) - просмотр всех пользователей (только для администратора)

POST(/createFirstAdmin) - создание администратора. Не требует авторизации. Работает пока не существует не одного администратора.
    Параметры: 
    login
    password
    phone

URL: /api/car
POST(/) - создание нового автомобиля
    number
    brand
    name
    owner_id - id владельца (для администратора)

GET(/id пользователя) - просмотр автомобилей пользователя

DELETE(/номер автомобиля) - удаление автомобиля по номерному знаку

URL: /api/visit
POST(/) - создание нового посещения
    Параметры:
    box
    carId
    owner_id - id владельца автомобиля (для администратора)

DELETE(/имя бокса) - досрочное прекращение посещения

URL: /api/box
GET(/) - просмотр боксов. В поле "visit" буде null в случае если бокс свободен. Если бокс занят "visit" содержит информацию о времени старта посещения данного бокса.
    Параметры:
    info - только для администратора, при значении "full" "visit" будет содержать полную информацию о посещении.

POST(/) - создание нового бокса (только для администратора).
    Параметры:
    name

При первом запуске требуется создать пустую БД с именем wash_db. Для создания первого администратора предназначен POST(/createFirstAdmin).
pgAdmin доступен на порту 5050. 


About

Тестовое задание, REST API сервиса автомоек

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published