为了确保我的网站安全并且所有权限都设置正确,我正在寻找一种方法来生成特定用户有权访问的每个页面的列表。 (所以... user_access()
为给定的uid返回TRUE
的每个菜单回调。
看起来像这样的东西:
$ user-> uid == 0
主页
照片
联系我们
$ user-> uid = 23
主页
照片
联系我们
论坛
博客
等
答案 0 :(得分:0)
这在Drupal中并不可行,因为从System透视图中没有真正的 pages ,只有带参数的回调函数。为了澄清,请考虑节点页面的标准路径:
node/[nid]
这将接受[nid]的任意整数,然后node/%
路径的回调函数将尝试查找具有匹配id的节点 - 在之后只有如果页面确实存在,Drupal'知道'。
对于所有其他路径也是如此,因此基本上您正在查看(几乎)无限数量的潜在页面,没有办法知道,如果它们实际上没有测试路径“存在”或以404结尾。
您可以做的是查看menu_router
表。在那里,您将找到所有已注册的路径,以及它们的回调和access_callback函数。对于那些你可以按用户进行检查的人,但结果很难解释,因为路径很多,并且会包含很多占位符。
如果您使用URL-Aliases / pathauto,则存在类似的选项。然后你可以拿url_alias
表并检查那里的所有条目。但是既然你有兴趣保护自己的网站,那就不会有任何帮助,因为你会错过任何没有别名的路径 - 如上所述,这些都是无数的。