Drupalのカスタムモジュールで、カスタム権限を使用する
概要
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
に以下のように権限を定義します:
access github webhook settings:
title: 'Access GitHub Webhook Settings'
description: 'Allows users to access and modify GitHub Webhook settings'
restrict access: TRUE
そして、routing.yml
でこのカスタム権限を設定します:
github_webhook.settings:
path: '/admin/config/github_webhook'
defaults:
_form: '\Drupal\github_webhook\Form\SettingsForm'
_title: 'GitHub Webhook Settings'
requirements:
_permission: 'access github webhook settings'
まとめ
_permission
には、標準的なDrupalの権限(administer site configuration
など)を設定できます。また、カスタム権限を定義して、そのモジュールや機能専用のアクセス権限を作成することも可能です。
設定
結果、以下のような権限が追加され、特定の役割に対するアクセスを許可することができました。
まとめ
Drupalのカスタムモジュールの構築および利用にあたり、参考になりましたら幸いです。
Discussion