Part of #3832. Moderate refactor — enforcement is scattered.
Background
Today: separate add_faq / edit_faq / delete_faq / approverec rights exist, but there is no distinct READ gate and no PUBLISH right separate from edit/approve. Enforcement is inconsistent across the ~111 check sites.
Tasks
Acceptance criteria
- Read, write, and publish are independently assignable rights
- A user with write but not publish can edit but not make content live
- Permission evaluation centralized; no scattered ad-hoc checks
- Migration preserves current effective permissions for existing users
- Tests cover the read/write/publish matrix
Part of #3832. Moderate refactor — enforcement is scattered.
Background
Today: separate
add_faq/edit_faq/delete_faq/approverecrights exist, but there is no distinct READ gate and no PUBLISH right separate from edit/approve. Enforcement is inconsistent across the ~111 check sites.Tasks
FAQ_READandFAQ_PUBLISHtoPermissionType(+ migration to seed them and assign to existing roles sensibly)FAQ_PUBLISH, not edit/approve mixFAQ_READin FAQ display +Faq.phpSQL generationhasPermission*Acceptance criteria