Skip to content

fix(пользователи): запрет самодаунгрейда и самоблокировки в форме изменения - #99

Merged
vladcheck merged 1 commit into
mainfrom
fix/95-self-downgrade
Oct 16, 2026
Merged

vladcheck merged 1 commit into
mainfrom
fix/95-self-downgrade

Conversation

@vladcheck

Copy link
Copy Markdown
Owner

Что

В UserUpdateFormController не было RBAC-защиты от самодаунгрейда: админ мог снять себе роль (ADMIN→USER) или активность (enabled=false), хотя самоудаление заблокировано в UserDetailsController.

Решение

Гард в onSave (симметрично запрету самоудаления): если цель — текущий пользователь И (роль уходит с ADMIN ИЛИ активность снимается), показывается текст ошибки, без вызова update, без навигации. Свои имя/email блокировать не надо — вне скоупа.

Проверки

  • Новые headless-тесты в UserUpdateFormControllerTest: самодаунгрейд и самоблокировка заблокированы, обновление чужого работает, смена своих имени/email не блокируется (сначала красные, потом зелёные).
  • Полный сьют: 254 теста зелёные; mvn spotless:check и mvn checkstyle:check чистые.

Closes #95

…енения

onSave блокирует сохранение, если цель — сам пользователь и роль
уходит с ADMIN или активность снимается: текст ошибки, без вызова
сервиса, без навигации. Свои имя/email не блокируются.

Closes #95
@vladcheck
vladcheck enabled auto-merge (rebase) October 16, 2026 17:25
@vladcheck
vladcheck merged commit eca5dc5 into main Oct 16, 2026
5 checks passed
@vladcheck
vladcheck deleted the fix/95-self-downgrade branch October 16, 2026 17:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Самодаунгрейд и самоблокировка через форму изменения пользователя

1 participant