Backend-приложение на Django REST Framework с собственной системой аутентификации и авторизации.
Реализована JWT-аутентификация и ролевая модель доступа (RBAC) с возможностью управления правами через API.
- Python
- Django
- Django REST Framework
- PostgreSQL
- JWT (PyJWT)
Пользователь проходит логин по email и password.
После успешного логина сервер выдает JWT-токен:
Authorization: Bearer
При последующих запросах пользователь определяется по этому токену.
Система включает:
- 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
- Пользователь логинится и получает JWT
- JWT передается в заголовке Authorization
- Сервер определяет пользователя
- Проверяется его роль и правила доступа
Результаты:
- ❌ Нет токена →
401 Unauthorized - ❌ Нет прав →
403 Forbidden - ✅ Есть доступ →
200 OK
POST /api/users/register/POST /api/users/login/POST /api/users/logout/GET /api/users/profile/DELETE /api/users/delete/(soft delete)
GET /api/mock/products/GET /api/mock/orders/GET /api/mock/rules/
GET /api/access/rules/PATCH /api/access/rules/<id>/
Удаление пользователя реализовано через:
is_active = False
После этого пользователь:
- не может логиниться
- остаётся в базе
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
👩💻 Автор
Мария Шкурат