Для примера, в нем есть 3 группы пользователей: Администратор, Менеджер, Бухгалтер.
И есть форма для редактирования, например, счета с несколькими полями: Номер, Дата, Сумма, Оплачено.
Администратор может видеть и редактировать все поля.
Менеджер может редактировать поля "Номер", "Дата", "Сумма". А "Оплачено" - только просмотр.
Бухгалтер может просматривать поля "Номер", "Дата", "Сумма". И может изменять поле "Оплачено".
В реальной ситуации полей и вариантов кто что может делать - больше. Сейчас все реализуется в лоб, с помощью кучи if'ов при формировании фронтенда (кому вывести редактируемое поле, а кому - заблокированное), и на бэкенде. Получается каша и при поддержке черт ногу сломит.
Как реализовать такие разграничения прав более грамотно?
Во-первых, используй PHP-фреймворк. как вариант - Yii 2 / Laravel 5.
А дальше просто настрой компонент RBAC/ACL, поскольку они предназначенны именно для таких задач. Как настраивать права в этих фреймворках и показывать поля в зависимости от роли - документации и примеров море. Думаю сам найдешь.