Skip to content

egorpusto/auth-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔐 Auth Project — Система аутентификации и авторизации

Backend-приложение с собственной системой аутентификации и авторизации на основе JWT и RBAC (Role-Based Access Control).

Python FastAPI PostgreSQL Docker JWT

🎯 О проекте

Приложение реализует полноценную систему управления пользователями и разграничения прав доступа к ресурсам без использования готовых решений из коробки. Система построена на основе RBAC - пользователи получают роли, роли получают разрешения на конкретные ресурсы и действия.

🛠️ Стек технологий

Backend

  • FastAPI — веб-фреймворк
  • SQLAlchemy (async) — ORM для работы с БД
  • Alembic — миграции базы данных
  • PostgreSQL — основная база данных
  • python-jose — создание и проверка JWT токенов
  • pwdlib — хэширование паролей (Argon2)
  • Pydantic v2 — валидация данных

DevOps

  • Docker & Docker Compose — контейнеризация

📋 Функционал

Пользователи

  • Регистрация с валидацией данных
  • Вход по email и паролю (JWT токен)
  • Получение своего профиля
  • Обновление профиля (PATCH)
  • Мягкое удаление аккаунта (is_active=False)

Система прав доступа (RBAC)

  • Роли пользователей (admin, manager, viewer)
  • Разрешения на уровне ресурс + действие
  • Проверка прав при каждом запросе
  • 401 если пользователь не авторизован
  • 403 если нет доступа к ресурсу
  • API управления ролями для администратора

Роли в системе

Роль Описание Доступные ресурсы
admin Полный доступ orders, products, reports (read + delete)
manager Ограниченный доступ orders (read + delete), products (read)
viewer Только чтение orders, products, reports (read)

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

Требования

  • Docker & Docker Compose
  • Git

Быстрый старт

  1. Клонируем репозиторий
git clone https://github.com/egorpusto/auth-project.git
cd auth-project
  1. Создаём .env файл
cp .env.example .env
# SECRET_KEY через: openssl rand -hex 32
  1. Запускаем контейнеры
docker-compose up --build
  1. Применяем миграции
docker-compose exec app alembic upgrade head
  1. Заполняем БД тестовыми данными
docker-compose exec app python scripts/seed.py

📡 API эндпоинты

Auth

Метод URL Описание
POST /api/v1/auth/register Регистрация
POST /api/v1/auth/login Вход в систему
POST /api/v1/auth/logout Выход из системы

Users

Метод URL Описание
GET /api/v1/users/me Получить свой профиль
PATCH /api/v1/users/me Обновить профиль
DELETE /api/v1/users/me Удалить аккаунт

Roles (только admin)

Метод URL Описание
GET /api/v1/roles Список всех ролей
POST /api/v1/roles/{user_id} Назначить роль пользователю

Mock-ресурсы

Метод URL Описание
GET /api/v1/mocks/orders Список заказов
GET /api/v1/mocks/products Список товаров
GET /api/v1/mocks/reports Список отчётов

👤 Тестовые пользователи

Email Пароль Роль
admin@test.com admin123 admin
manager@test.com manager123 manager
viewer@test.com viewer123 viewer

👤 Автор

Egor Anoshin

Releases

No releases published

Packages

 
 
 

Contributors