Skip to content

ANDRIYTS1234/nodejs_auth-app

Repository files navigation

Node.js Authentication API

Цей проект є серверною частиною (Backend) для системи автентифікації користувачів. Він забезпечує повний цикл керування обліковими записами, включаючи реєстрацію, підтвердження через електронну пошту, авторизацію та безпечне керування сесіями.

Опис проекту

Проект реалізує надійну систему автентифікації на основі JSON Web Tokens (JWT). Основна мета — надати розробникам готовий каркас для інтеграції захищеного доступу до додатків. Система підтримує механізм "Access" та "Refresh" токенів, що дозволяє підтримувати сесію користувача активною без необхідності постійного введення пароля, зберігаючи при цьому високий рівень безпеки.

Робота з базою даних

Для роботи додатка необхідно виконати два кроки:

  1. Створення бази даних (вручну): Перед першим запуском сервера необхідно створити порожню базу даних у PostgreSQL. Ви можете зробити це за допомогою SQL-запиту:

    CREATE DATABASE auth_db;

    (Назва бази даних повинна збігатися зі значенням DB_NAME у вашому файлі .env).

  2. Створення таблиць (автоматично): Проект налаштований на автоматичну синхронізацію моделей із базою даних. При першому успішному підключенні Sequelize автоматично створить усі необхідні таблиці (users, tokens), якщо вони ще не існують.

Технології

Додаток побудований за принципами багатошарової архітектури:

  1. Маршрутизація (Routes): Визначає доступні кінцеві точки (endpoints) для автентифікації (/auth) та роботи з профілем користувача (/profile).
  2. Контролери (Controllers): Обробляють вхідні HTTP-запити, валідують дані та передають їх до відповідних сервісів.
  3. Сервіси (Services): Містять основну бізнес-логіку: хешування паролів, генерацію токенів, взаємодію з базою даних та надсилання листів.
  4. Мідлвари (Middlewares): Захищають маршрути, перевіряючи наявність та валідність токенів у заголовках або куках запитів.
  5. Моделі (Models): Описують структуру даних у базі (користувачі та їхні токени).

Процес реєстрації включає створення запису в базі даних та надсилання токена активації на пошту користувача. Авторизація видає пару токенів: Access Token (короткостроковий, передається в тілі відповіді) та Refresh Token (довгостроковий, зберігається в HTTP-only cookie).

Технології

При розробці використовувався сучасний стек технологій для забезпечення швидкодії та типізації:

  • Runtime: Node.js
  • Мова програмування: TypeScript
  • Фреймворк: Express.js
  • База даних: PostgreSQL
  • ORM: Sequelize (з sequelize-typescript для покращеної типізації)
  • Безпека: bcrypt (хешування паролів), jsonwebtoken (JWT)
  • Комунікації: Nodemailer (надсилання email)
  • Інструменти розробки: Nodemon, ESLint, Prettier, Jest

Запуск проекту

Попередні вимоги

  • Встановлений Node.js (версія 18 або новіша)
  • Встановлений та запущений PostgreSQL

Налаштування середовища

  1. Створіть файл .env у кореневій директорії проекту, скопіювавши вміст із .env.example.
  2. Заповніть змінні середовища актуальними даними:
    • Параметри підключення до БД (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME).
    • Секретні ключі для JWT (JWT_ACCESS_SECRET, JWT_REFRESH_SECRET).
    • Дані вашого SMTP-сервера для надсилання листів.

Встановлення та запуск

  1. Встановіть залежності:

    npm install
  2. Запустіть сервер у режимі розробки:

    npm run dev
  3. Для продуктивного запуску виконайте збірку та старт:

    npm run build
    npm start

Сервер буде доступний за адресою, вказаною в PORT (за замовчуванням http://localhost:5000).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors