Judge the ATF flags a request changes, not the stored row

Fixkamo-shared-library
Ya
15 Agosti 2026, 05:54 UTC
Mwandishi
Kamo
Ahadi ya
948ea43

**************** judges all three flags every time, so an update path had no way to say "this request does not touch tobacco". Callers filled the gap by re-deriving the missing flags from the stored row — which turns the check into a re-audit of data the caller never sent. An org whose stored flags disagree with its applied model then cannot save ANYTHING. Found 2026-08-14 on KamoCRM Inc.: is_alcohol, is_tobacco and is_firearms all true under an all-NOT_ALLOWED master model, so every PUT /org/{id} answered 403 "Alcohol-related content is not permitted by the applied security model" — including a request whose only field was a logo colour. That refusal never remediated the stored violation; it just made the endpoint unusable, with an error naming a subject the caller had not mentioned. **************** takes Booleans, where null means "not being changed" and is skipped. This narrows what is EXAMINED, never what is permitted: a request that actually sets a forbidden flag is still refused, and the primitive form stays for the create path, where all three flags genuinely are being set for the first time. The class doc already scoped these policies to "org ATF booleans on child create". assertAgeRangeAllowed already returned early on a null age, so the update path can express the same "not being changed" idea there with no new method.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei