🌐 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 — валидация входных данных.
-
Клонируйте репозиторий:
git clone https://github.com/woookle/nice_authorization.git cd nice_authorization
-
Установите зависимости:
npm install
-
Создайте файл
.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
-
Запустите сервер:
npm run server
-
Начало регистрации
POST /api/auth/register
Отправляет код подтверждения на email. -
Завершение регистрации
POST /api/auth/send-code
Завершает регистрацию с валидацией кода.
-
Вход в систему
POST /api/auth/login
Авторизация пользователя. -
Выход из системы
DELETE /api/auth/logout
Выход из системы с удалением токена.
-
Включение 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 с кодом подтверждения. Шаблон включает:
- Логотип компании (если указан в
.env
). - Код подтверждения.
- Инструкции для завершения регистрации.
После успешной регистрации пользователь получает email с приветствием и ссылкой для входа. Шаблон включает:
- Логотип компании (если указан в
.env
). - Приветственное сообщение.
- Кнопку для входа в аккаунт.
Для работы проекта используются следующие npm-пакеты:
bcrypt
— хеширование паролей.cookie-parser
— работа с cookies.dotenv
— загрузка переменных окружения.express
— фреймворк для API.express-validator
— валидация данных.jsonwebtoken
— работа с JWT.mongoose
— работа с MongoDB.nodemailer
— отправка email.speakeasy
— генерация OTP.qrcode
— генерация QR-кодов.