Repository navigation
fix: enforce project team management authorization - #763
Merged
Merged
Conversation
This was referenced Sep 29, 2026
TThanos3000
marked this pull request as ready for review
September 29, 2026 13:33
19 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что изменено
Посторонний авторизованный пользователь больше не может сменить лидера чужого проекта или удалить участника публичного проекта. Team mutation проверяет object permission и повторно проверяет текущего лидера внутри atomic service.
Зачем
PR A утверждённого hardening legacy-команд. Спецификация и AC:
docs/team-security-api.md.Реализация
0976fdf9ff08e85922a38508509fc31347ef1fd3(dev).c44bcf089c41c6e8c657a70390e98c46bc2510e7.projects/views.py,projects/permissions.py,projects/team_service.py,projects/tests/test_team_security.py,docs/team-security-api.md.API
Успешные пути/ответы сохранены. Новые controlled ошибки
{code, detail}:not_project_team_manager(403),leader_cannot_leave,collaborator_not_found,invalid_collaborator_id,already_project_leader(422),direct_member_add_unsupported(405). Сломанный direct add закрыт явным ответом; рабочее добавление через Invite сохраняется.UI
Не менялся. Angular согласован отдельным PR D #392; React не исследовался и не менялся по ТЗ.
Permissions
Team management — только текущий Project.leader; staff/read involvement не получают новых прав. Проверка есть в HTTP и внутри service после lock.
Проверки
python manage.py check,makemigrations --check --dry-run: без ошибок/изменений.git diff --check.Первый full run на локальной БД с locale C провалил 4 существующие проверки кириллицы. После исправления только тестового окружения full suite прошёл; код поиска не менялся.
Acceptance criteria
Не проверено
Browser не применим к backend-only diff. Live DEV/PROD mutations, merge и deploy не выполнялись.
Риски / migration
Migrations: нет. DB constraints: не менялись. Freeze/min/max/exclusivity относятся к PR C, Invite lifecycle — к PR B. Совместимость новых business error codes с Angular реализована в PR D. Следующие backend PR временно stacked по согласованию пользователя; merge выполняется вручную в порядке A → B → C.