🕌

Drupalのカスタムモジュールで、カスタム権限を使用する

2024/09/09に公開

概要

Drupalのカスタムモジュールで、カスタム権限を使用する機会がありましたので、備忘録です。

背景

以下の記事で、DrupalからGitHubのActionsを実行するモジュールを紹介しました。

https://zenn.dev/nakamura196/articles/11f85c2ef4fca7

ただし、権限をadminister site configurationに設定しており、管理者権限のユーザしか実行することができませんでした。

この点に対応したコミットは以下です。

https://github.com/nakamura196/Drupal-module-github_webhook/commit/c3b6f57bebfeda0556c929c8ed8ed62a0eb0a5c4

方法

以下、ChatGPT 4oの回答結果を共有します。


Drupalの_permissionには、特定のアクセス権限を設定するための値を設定できます。これによって、特定の役割を持つユーザーが、そのルートにアクセスできるかどうかを制御します。

_permissionに設定できる主な値は以下のようなものです:

一般的な権限

Drupalには、いくつかの標準的な権限が用意されています。以下は一般的に使用される権限の例です:

  1. administer site configuration - サイト全体の設定を管理できる権限
  2. access content - コンテンツへのアクセス権限
  3. administer users - ユーザーを管理できる権限
  4. create content - コンテンツを作成できる権限
  5. edit any content - 任意のコンテンツを編集できる権限
  6. delete any content - 任意のコンテンツを削除できる権限
  7. view user profiles - ユーザープロフィールを閲覧できる権限
  8. administer permissions - 権限を管理できる権限
  9. access administration pages - 管理者ページへのアクセス権限
  10. 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