サイトが安全で、すべての権限が正しく設定されていることを確認するために、特定のユーザーがアクセスできるすべてのページのリストを生成する方法を探しています。(つまり...特定のuidをuser_access()
返すすべてのメニューコールバック)。TRUE
次のようになります。
$user->uid == 0
家
写真
お問い合わせ
$user->uid = 23
家
写真
お問い合わせ
フォーラム
ブログ
等
これは Drupal では現実的ではありません。システムの観点からは実際のページはなく、コールバック関数だけが引数を取るからです。明確にするために、ノード ページの標準的なパスを考えてみましょう。
node/[nid]
これは [nid] の任意の整数を受け入れ、node/%
パスのコールバック関数が一致する ID を持つノードを見つけようとします。ページが実際に存在するかどうかを Drupal が「認識する」のは、それを探した後でのみです。
同じことが他のすべてのパスにも当てはまります。そのため、基本的に、パスが実際に「存在する」か 404 で終わるかどうかをテストする以外に、(ほぼ) 無制限の数の潜在的なページを見ていることになります。
あなたができるmenu_router
ことは、テーブルを見ることです。そこには、コールバック関数と access_callback 関数とともに、登録されているすべてのパスがあります。ユーザーごとにチェックを行うこともできますが、パスがたくさんあり、多くのプレースホルダーが含まれているため、結果を解釈するのは困難です。
URL-Aliases/pathauto を使用する場合、同様のオプションが存在します。次に、url_alias
テーブルを取得して、そこにあるすべてのエントリをチェックできます。しかし、あなたは自分のサイトを保護することに関心があるので、エイリアスを持たないパスを見逃す可能性があるため、これは実際には役に立ちません。上記のように、これらは無数にあります。