From 57b2d856a1442a1a44350bcb07dbe3b45b85f690 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=9D=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Mon, 8 Dec 2025 14:17:06 +0300 Subject: [PATCH] docs: document final solution for position permissions issue MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause identified: - Template checked non-existent permissions (publish_company_post, publish_department_post) - Django only creates 4 default permissions: add, change, delete, view - User actually HAD feed.add_post permission from Position→Group chain Solution: - Changed template check to use feed.add_post (real permission) - Confirmed PositionRoleBackend works correctly (13/13 tests passed) - User can now see 'Create Post' button Production diagnostic confirmed user has permissions through position: Position 'СММ специалист' → Group 'Дизайн СММ Реклама' → Permissions include feed.add_post --- backend/POSITION_PERMISSIONS_TESTING.md | 56 ++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/backend/POSITION_PERMISSIONS_TESTING.md b/backend/POSITION_PERMISSIONS_TESTING.md index b53a0893..59634f57 100644 --- a/backend/POSITION_PERMISSIONS_TESTING.md +++ b/backend/POSITION_PERMISSIONS_TESTING.md @@ -1,6 +1,60 @@ # Тестирование Прав Доступа Через Должности (Position Permissions) -## Описание Проблемы +## ✅ РЕШЕНИЕ НАЙДЕНО И ПРИМЕНЕНО + +**Дата:** 8 декабря 2025 +**Статус:** ✅ Исправлено и протестировано + +### Корневая Причина + +В шаблоне `feed/feed_list.html` проверялись **несуществующие** права: +```django +{% if user.is_staff or perms.feed.publish_company_post or perms.feed.publish_department_post %} +``` + +Эти права **никогда не создавались** в Django! Правильное право для создания постов: +```django +{% if user.is_staff or perms.feed.add_post %} +``` + +### Диагностика Production + +Запущен отладочный скрипт для пользователя `maze3290@gmail.com`: + +```python +User: maze3290@gmail.com +Position: СММ специалист +Position Groups: ['Дизайн СММ Реклама'] +Group Permissions: ['add_post', 'change_post', 'delete_post', 'view_post', ...] + +User Permissions (via PositionRoleBackend): +{'feed.add_post', 'feed.change_post', 'feed.delete_post', ...} + +Has feed.publish_company_post: False # ❌ Несуществующее право! +Has feed.add_post: True # ✅ Реальное право! +``` + +**Вывод:** PositionRoleBackend работает правильно, проблема была в шаблоне! + +### Исправление + +**Файл:** `backend/templates/feed/feed_list.html` (строка 19) + +```diff +- {% if user.is_staff or perms.feed.publish_company_post or perms.feed.publish_department_post %} ++ {% if user.is_staff or perms.feed.add_post %} +``` + +### Коммиты + +1. `769f2ed` - test: add comprehensive position permissions tests +2. `66406d9` - fix: add is_active check to PositionRoleBackend +3. `4a6b92f` - docs: add production debugging guide +4. `6162d9f` - **fix: correct permission check in feed_list.html** ← РЕШЕНИЕ + +--- + +## Описание Проблемы (Оригинал) ### Исходная Жалоба Пользователя > "Ты говорил, что пользователь с должностью получает все права которые есть у групп в этой должности, но по факту кнопка создания публикаций не появляется"