Как динамически собрать админку? - PullRequest
1 голос
/ 12 июля 2010

Я пытаюсь найти наилучший способ динамического создания навигационного меню моего приложения администратора, основанного на результате прохождения каждого из объектов на каждой из страниц, так что только страницы с объектами, которые доступны пользователю отображаются в меню!

В качестве простого примера, скажем, у меня есть два типа пользователей; ГОССЕКРЕТАРЬ И МЕНЕДЖЕР. У меня есть простая страница администратора для управления персоналом с двумя полями, которые я могу обновить; «адрес» и «дата рождения». Обычно оба поля имеют уровень доступа, который позволяет СЕКРЕТАРЮ выполнять наши обычные операции CRUD. Наш администратор приходит один день и решает, что для «даты рождения» требуется доступ на уровне МЕНЕДЖЕРА - достаточно просто скрыть это поле на странице или сделать его доступным только для чтения. Теперь, внезапно, администратор решает, что поле «адрес» также требует доступа уровня МЕНЕДЖЕРА. Учитывая, что на этой странице нет полей, доступных пользователю СЕКРЕТАРЯ, как мое меню узнает, отображать его или нет (без создания отдельного правила для опции меню)?

Такие вещи, как ACL и навигация в Zend, похоже, зашли настолько далеко, что сделали пункт меню объектом контроля доступа. Это: http://www.tonymarston.net/php-mysql/role-based-access-control.html#menu-system, кажется, делает то, что я спрашиваю, но я не могу найти никаких демонстраций или фрагментов кода, которые говорят на эту конкретную тему.

Следующий вопрос: если мне нужно пойти так далеко, чтобы поддерживать список всех объектов на странице в БД, почему бы не включить HTML и в БД и заставить приложение динамически собирать страницу вместо используя шаблон View +? (можно кешировать конечно)

Есть предложения?

1 Ответ

1 голос
/ 12 июля 2010

Говоря в общих чертах, проверив разрешения для отдельных объектов страницы, я смог подсчитать, сколько объектов допустимо.Если это число = 0, то я бы пропустил страницу.

Код для вас отсутствует, но это теоретическая основа подхода, который я бы выбрал.

...