web-dev-qa-db-ja.com

特定の語彙と用語を管理する役割を制限し、語彙を作成するアクセス権を削除します

私たちが知る限り、Drupal(まだD8にあります)には、権限と分類法に関する多くの問題があります。

ユーザーロールにAdminister vocabularies and termsへのアクセス許可を与えて、admin/structure/taxonomyのページにアクセスできるようにしますが、そのロールを特定のボキャブラリーに制限したい(その後 Vocabulary Permissions Per役割 モジュールが便利です)

残っている唯一の問題は、Add Vocabularyに付属するAdminister vocabularies and terms権限です。

だからここに質問です:他の語彙分類用語を維持するためのアクセス権を与えながら、ユーザーが新しい語彙を作成/既存の語彙を編集することを制限するにはどうすればよいですか?

4
user23288

"Creating a new vocabulary"は、URLを使用して行うことですadmin/structure/taxonomy/add、while "Editing existing vocabularies"(say with machine name demotags )はURL admin/structure/taxonomy/demotags/edit

これらのURLへの "restrict"アクセスへの可能な解決策(これは、探している欠けている部分のようです)に Rules モジュールを使用することですこの。これを行うには、「 モジュールのアクセス許可をより詳細にする方法 」という質問に対する私の回答を確認してください。ルールが含まれており(ルールエクスポート形式)、これらのマイナーチューニングを適用した場合に使用できるはずです。

  • この検証をどのロールに適用する必要があるかについてのルール条件を確認します(ある場合は、その条件を削除しない場合)。
  • ルール条件をvisitorsを含むURLに適合させます(最初の段落のように、分類に関連するURLに一致させます)。
  • おそらく、「正規表現」が含まれているルール条件は必要ありません(検証するURLは数個しかありません)。その場合、「OR」の部分も必要ありません。
  • ルールアクション(表示するメッセージと強制するリダイレクト)を確認します。
1
Pierre.Vriens
  1. 「Add new vocabulary」などの新しい権限を作成します
 /**
 * hook_permission()。
を実装します*/
関数YOUR-CUSTOM-MODULE-NAME_permission(){
 $ permissions = array(
 'add new vocabulary' => array(
 'title' => t( 'Add new vocabulary')、
)、
); 
 $ permissions; 
} 
を返します
  1. メニューadmin/struture/taxonomy /「アクセス引数」の追加
 
 /**
 * hook_menu_alter()。
 */
関数を実装しますYOUR-CUSTOM-MODULE-NAME_menu_alter(&$ items){
 $ items ['admin/structure/taxonomy/add'] ['access arguments'] = 
 array( 'add new vocabulary'); 
} 
  1. Admin/people/permissionsから、YOUR-CUSTOM-MODULE-NAMEの下に新しいパーミッション「Add new vocabulary」が見つかり、必要なロールのみに付与します。
0
berramou