Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django Auth RBAC System

📌 Описание

Backend-приложение на Django REST Framework с собственной системой аутентификации и авторизации.

Реализована JWT-аутентификация и ролевая модель доступа (RBAC) с возможностью управления правами через API.


🚀 Стек

  • Python
  • Django
  • Django REST Framework
  • PostgreSQL
  • JWT (PyJWT)

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

Пользователь проходит логин по email и password.

После успешного логина сервер выдает JWT-токен:

Authorization: Bearer

При последующих запросах пользователь определяется по этому токену.


🛡 Авторизация (RBAC)

Система включает:

  • User — пользователь
  • Role — роль (admin, user)
  • BusinessElement — ресурс (products, orders, rules)
  • AccessRule — правила доступа

Каждое правило содержит:

  • can_read
  • can_read_all
  • can_create
  • can_update
  • can_update_all
  • can_delete
  • can_delete_all

🔄 Логика доступа

  1. Пользователь логинится и получает JWT
  2. JWT передается в заголовке Authorization
  3. Сервер определяет пользователя
  4. Проверяется его роль и правила доступа

Результаты:

  • ❌ Нет токена → 401 Unauthorized
  • ❌ Нет прав → 403 Forbidden
  • ✅ Есть доступ → 200 OK

📡 API

Users

  • POST /api/users/register/
  • POST /api/users/login/
  • POST /api/users/logout/
  • GET /api/users/profile/
  • DELETE /api/users/delete/ (soft delete)

Mock ресурсы

  • GET /api/mock/products/
  • GET /api/mock/orders/
  • GET /api/mock/rules/

Управление доступом (только admin)

  • GET /api/access/rules/
  • PATCH /api/access/rules/<id>/

🧠 Soft Delete

Удаление пользователя реализовано через:

is_active = False

После этого пользователь:

  • не может логиниться
  • остаётся в базе

🔓 Logout

Logout реализован на клиентской стороне:

  • сервер возвращает успешный ответ
  • клиент удаляет токен

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

pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

📌 Примечание

После запуска необходимо создать:

роли: admin, user business elements: products, orders, rules access rules


👩‍💻 Автор

Мария Шкурат

About

Custom authentication and authorization system with JWT and RBAC built with Django REST Framework and PostgreSQL.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages