概要
Drupalのカスタムモジュールで、カスタム権限を使用する機会がありましたので、備忘録です。
背景
以下の記事で、DrupalからGitHubのActionsを実行するモジュールを紹介しました。
ただし、権限をadminister site configurationに設定しており、管理者権限のユーザしか実行することができませんでした。
この点に対応したコミットは以下です。
方法
以下、ChatGPT 4oの回答結果を共有します。
Drupalの_permissionには、特定のアクセス権限を設定するための値を設定できます。これによって、特定の役割を持つユーザーが、そのルートにアクセスできるかどうかを制御します。
_permissionに設定できる主な値は以下のようなものです:
一般的な権限
Drupalには、いくつかの標準的な権限が用意されています。以下は一般的に使用される権限の例です:
administer site configuration- サイト全体の設定を管理できる権限access content- コンテンツへのアクセス権限administer users- ユーザーを管理できる権限create content- コンテンツを作成できる権限edit any content- 任意のコンテンツを編集できる権限delete any content- 任意のコンテンツを削除できる権限view user profiles- ユーザープロフィールを閲覧できる権限administer permissions- 権限を管理できる権限access administration pages- 管理者ページへのアクセス権限administer taxonomy- タクソノミーを管理できる権限
カスタム権限
モジュール固有の権限を作成することもできます。例えば、github_webhookモジュールに独自の権限を作成し、_permissionで使用することも可能です。
カスタム権限を作成する場合は、github_webhook.permissions.ymlに以下のように権限を定義します:
そして、routing.ymlでこのカスタム権限を設定します:
まとめ
_permissionには、標準的なDrupalの権限(administer site configurationなど)を設定できます。また、カスタム権限を定義して、そのモジュールや機能専用のアクセス権限を作成することも可能です。
設定
結果、以下のような権限が追加され、特定の役割に対するアクセスを許可することができました。

まとめ
Drupalのカスタムモジュールの構築および利用にあたり、参考になりましたら幸いです。