One rule to apply.
Everywhere in the app.
At Archie, fine-grained permissions had to be introduced into an existing application. Visible elements could vary depending on the user or their group, from an entire page down to a single button.
I developed the computation logic on the front-end from the data returned by the back-end, then refactored the interface to apply these permissions at its different levels.
Permission data ↗ Computation ↗ Display