如何动态组合管理菜单?

时间:2010-07-12 08:24:14

标签: php access-control

我正在尝试根据遍历每个页面上每个对象的结果,动态地组合我的管理应用程序的导航菜单的最佳方法,这样只有包含可用对象的页面用户显示在菜单中!

作为一个简单的例子,假设我有两种用户类型;秘书和经理。我有一个简单的管理页面来管理有两个我可以更新的字段的员工; “地址”和“出生日期”。通常,这两个字段都具有访问级别,允许SECRETARY执行正常的CRUD操作。我们的管理员有一天出现并决定“出生日期”需要经理级访问 - 它足够直接在页面上隐藏该字段或将其设置为只读。现在,突然之间,管理员决定“地址”字段也需要管理员级访问权限。鉴于此页面上没有可供SECRETARY用户使用的字段,我的菜单如何知道是否显示(不为菜单选项创建单独的规则)?

Zend中的ACL和导航之类的东西似乎只是将菜单选项作为访问控制对象。这个:http://www.tonymarston.net/php-mysql/role-based-access-control.html#menu-system似乎做了我正在问的问题,但我找不到任何谈论这个特定主题的演示或代码块。

接下来的问题是,如果我必须维护数据库中页面上所有对象的列表,为什么不在数据库中包含HTML,并让应用程序动态组合页面而不是使用View +模板? (当然可以缓存)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

在粗略和通用的术语中,在检查单个页面对象的权限后,我可以计算有多少对象是有效的。如果该count = 0,那么我将省略该页面。

没有代码,但这是我采取的方法的理论基础。