core/portal: сотрудник без группы видит только базовые разделы
Ранее разделы с perm=None (Новости, Задачи, Дислокация, Документы, Чат, Календарь, HR-портал, Справка) были доступны любому вошедшему — сотрудник без назначенной группы видел почти весь портал. Теперь такие разделы требуют хотя бы одной группы; без групп доступны только базовые: Главная, Профиль, Поддержка IT. - user_can_access: BASELINE_OPEN_KEYS + gate «есть ли группа» для perm=None - PortalSectionAccessMiddleware: барьер по префиксу URL (в т.ч. вложенные страницы вроде /tasks/5/), /settings/ не гейтим (редирект на свой профиль) - index.html: пункты меню под can_section (сайдбар, дропдаун, bottom-nav), секция «Управление» скрывается целиком, если пусто - тесты: политика без-группы + прямой заход по URL; тест-фабрики выдают группу (реальный сотрудник её имеет) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -162,6 +162,9 @@ class DislocationColumnsTests(TestCase):
|
||||
mattermost_sync_enabled=False,
|
||||
ad_sync_enabled=False,
|
||||
)
|
||||
# Любая группа = доступ к открытым разделам (в т.ч. /dislocation/).
|
||||
from django.contrib.auth.models import Group
|
||||
cls.user.groups.add(Group.objects.get_or_create(name='Сотрудники (тест)')[0])
|
||||
DislocationColumnPreset.objects.update_or_create(
|
||||
code='standard',
|
||||
defaults={
|
||||
|
||||
Reference in New Issue
Block a user