Skip to content

Romax-91/ERP_AERO

Repository files navigation

REST API Service with JWT Authentication

REST API сервис с авторизацией по JWT-токенам, управлением файлами и базой данных MySQL.

📋 Содержание

📝 Описание

  • Авторизация по jwt-токену (/info, /logout, /file(все роуты) );
  • Настроить CORS для доступа с любого домена;
  • DB – Mysql;
  • Токен создавать при каждой авторизации, действителен 10 минут. Продлевать по истечению, с помощью refresh токена;
  • Реализовать на основе фреймворка express js;
  • API:
    • /signin [POST] - запрос jwt-токена по id и паролю;
    • /signin/new_token [POST] - обновление jwt-токена по refresh токену +/signup [POST] - регистрация нового пользователя; - Поля id и password, id это номер телефона или email;
    • /file/upload [POST] - добавление нового файла в систему и запись параметров файла в базу: название, расширение, MIME type, размер, дата загрузки;
    • /file/list [GET] выводит список файлов и их параметров из базы с использованием пагинации с размером страницы, указанного в передаваемом параметре list_size, по умолчанию 10 записей на страницу, если параметр пустой. Номер страницы указан в параметре page, по умолчанию 1, если не задан;
    • /file/delete/:id [DELETE] - удаляет документ из базы и локального хранилища;
    • /file/:id [GET] - вывод информации о выбранном файле;
    • /file/download/:id [GET] - скачивание конкретного файла;
    • /file/update/:id [PUT] - обновление текущего документа на новый в базе и локальном хранилище;
  • При удачной регистрации вернуть пару jwt-токен и refresh токен;
    • /info [GET] - возвращает id пользователя;
    • /logout [GET] - выйти из системы;
  • После выхода необходимо заблокировать текущие токены пользователя. При следующем входе, пользователь должен получить новую пару токенов, отличную от тех, которые были при выходе;
  • Старые токены должны перестать работать после выхода;
  • Вход в API может осуществлять несколько устройств под одним логином.
  • После выхода одного из устройств, остальные устройства одного пользователя должны продолжать работать. Срок исполнения задания: 3 дня.

📦 Установка

Клонируйте репозиторий:

git clone git@github.com:Romax-91/ERP_AERO.git
cd ERP_AERO
npm install

Создайте БД в MySQL и выполните запросы для инициализации таблиц db_schema.sql

⚙️ Настройка

Создайте файл .env в корне проекта на основе .env_example:

# Порт сервера
PORT=3000

# Настройки подключения MySQL
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=api_service
DB_PORT=3306

# JWT secrets
JWT_ACCESS_SECRET=your_access_secret_key_here
JWT_REFRESH_SECRET=your_refresh_secret_key_here

# срок жизни access токена
JWT_ACCESS_EXPIRE='10m'
# срок жизни refresh токена
JWT_REFRESH_EXPIRE='7d'

# Директория локального хранилища файлов
UPLOAD_DIR=uploads

🚀 Использование

Запуск в режиме разработки:

npm run dev

Запуск в продакшене:

npm start

About

сервис с REST API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors