Skip to content

Latest commit

 

History

History
154 lines (120 loc) · 5.91 KB

README.md

File metadata and controls

154 lines (120 loc) · 5.91 KB

🇷🇺 Nice Authorization

🌐 Nice Authorization — это серверная часть приложения для управления аутентификацией пользователей, включая регистрацию, вход, двухэтапную аутентификацию (2FA) и другие функции. Проект построен на Node.js с использованием Express и MongoDB.


🚀 Возможности

  • Регистрация пользователя 📝
    • Отправка кода подтверждения на email.
    • Завершение регистрации с валидацией кода.
  • Авторизация и выход 🔐
    • Вход в систему с проверкой учетных данных.
    • Выход из системы с удалением токена.
  • Двухэтапная аутентификация (2FA) 🔒
    • Включение и отключение 2FA.
    • Генерация QR-кода для Google Authenticator.
    • Верификация OTP-кода.
  • Защищенные маршруты 🛡️
    • Проверка авторизации пользователя.
    • Доступ к защищенным данным.
  • Кастомизация email-уведомлений ✉️
    • Отправка писем с логотипом компании.
    • Шаблоны для кода подтверждения и успешной регистрации.

🛠️ Технологии

  • Node.js — среда выполнения JavaScript.
  • Express — фреймворк для создания API.
  • MongoDB — база данных для хранения пользователей.
  • JWT — JSON Web Tokens для аутентификации.
  • Nodemailer — отправка email-уведомлений.
  • Speakeasy — генерация и проверка OTP-кодов.
  • QRCode — генерация QR-кодов для 2FA.
  • Bcrypt — хеширование паролей.
  • Express Validator — валидация входных данных.

📂 Установка и запуск

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

    git clone https://github.com/woookle/nice_authorization.git
    cd nice_authorization
  2. Установите зависимости:

    npm install
  3. Создайте файл .env и заполните его:

    MONGODB_URI=mongodb://localhost:27017/your_mongodb_url
    JWT_SECRET=your_jwt_secret
    PORT=your_port
    EMAIL_USER=your_email
    EMAIL_APP_PASSWORD=your_app_password
    EMAIL_COMPANY_NAME=your_company
    COMPANY_LOGO_IMAGE=your_logo
  4. Запустите сервер:

    npm run server

📚 Документация API

🔐 Аутентификация

Регистрация

  • Начало регистрации
    POST /api/auth/register
    Отправляет код подтверждения на email.

  • Завершение регистрации
    POST /api/auth/send-code
    Завершает регистрацию с валидацией кода.

Авторизация

  • Вход в систему
    POST /api/auth/login
    Авторизация пользователя.

  • Выход из системы
    DELETE /api/auth/logout
    Выход из системы с удалением токена.

🔒 Двухэтапная аутентификация (2FA)

  • Включение 2FA
    PATCH /api/auth/enable-2fa
    Включает двухэтапную аутентификацию и генерирует QR-код.

  • Отключение 2FA
    PATCH /api/auth/disable-2fa
    Отключает двухэтапную аутентификацию.

  • Верификация OTP
    POST /api/auth/verify-otp
    Проверяет OTP-код для завершения входа.

🛡️ Защищенные маршруты

  • Проверка авторизации
    GET /api/auth/protected
    Возвращает защищенные данные для авторизованных пользователей.

📧 Шаблоны email

Код подтверждения

При регистрации пользователь получает email с кодом подтверждения. Шаблон включает:

  • Логотип компании (если указан в .env).
  • Код подтверждения.
  • Инструкции для завершения регистрации.

Успешная регистрация

После успешной регистрации пользователь получает email с приветствием и ссылкой для входа. Шаблон включает:

  • Логотип компании (если указан в .env).
  • Приветственное сообщение.
  • Кнопку для входа в аккаунт.

📦 Зависимости

Для работы проекта используются следующие npm-пакеты:

  • bcrypt — хеширование паролей.
  • cookie-parser — работа с cookies.
  • dotenv — загрузка переменных окружения.
  • express — фреймворк для API.
  • express-validator — валидация данных.
  • jsonwebtoken — работа с JWT.
  • mongoose — работа с MongoDB.
  • nodemailer — отправка email.
  • speakeasy — генерация OTP.
  • qrcode — генерация QR-кодов.


ᴛʜᴀɴᴋs ᴀɴᴅ ʜᴀᴠᴇ ᴀ ɴɪᴄᴇ ᴅᴀʏ 😊