Skip to content

FIX: Bulk tag, category, and read-state ops no longer lie or overreach - #42784

Open
ZogStriP wants to merge 1 commit into
fix-bulk-delete-topics-copyfrom
fix-bulk-actions-silent-noops
Open

FIX: Bulk tag, category, and read-state ops no longer lie or overreach#42784
ZogStriP wants to merge 1 commit into
fix-bulk-delete-topics-copyfrom
fix-bulk-actions-silent-noops

Conversation

@ZogStriP

@ZogStriP ZogStriP commented Aug 21, 2026

Copy link
Copy Markdown
Member

Stacked on #42776. Follow-up 2 of 2 from the bulk-actions investigation (meta t/410444).

PostRevisor silently refuses tag and category changes the user lacks permission for, yet the bulk layer gated only on can_edit? and counted every topic as changed: a green "Completed" toast, zero changes applied — and each refused revise still bumped post.version and wrote an empty PostRevision, permanently stamping a bogus "1 edit" indicator on up to 1000 topics per click. The UI also offered "Manage tags" to users the server would then refuse.

reset_bump_dates checked permissions once, globally, so a TL4 user could reset bump dates on topics in restricted categories they cannot see — the single-topic route fixed this exact hole in aac9494 (#37798), but the bulk path was missed. destroy_post_timing had no permission check at all, and could drive posts.reads negative on topics where the caller had no timings to destroy.

`PostRevisor` silently refuses tag and category changes the user lacks
permission for, yet the bulk layer gated only on `can_edit?` and counted
every topic as changed: a green "Completed" toast, zero changes applied,
and each refused revise still bumped `post.version` and wrote an empty
`PostRevision`, permanently stamping a bogus "1 edit" indicator on up to
1000 topics per click. The UI also offered "Manage tags" to users the
server would then refuse.

`reset_bump_dates` checked permissions once, globally, so a TL4 user
could reset bump dates on topics in restricted categories they cannot
see — the single-topic route fixed this exact hole in aac9494, but
the bulk path was missed. `destroy_post_timing` had no permission check
at all, and could drive `posts.reads` negative on topics where the
caller had no timings to destroy.
@ZogStriP
ZogStriP force-pushed the fix-bulk-actions-silent-noops branch from 1aa8bdc to 4da1a05 Compare August 21, 2026 08:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants