本記事の一部はAIが作成しました。

概要

Drupalでカスタムモジュールの設定画面を作成する際、管理者以外のユーザーにもアクセスを許可したい場合があります。今回は、GitHub Webhookモジュールを例に、この問題の解決方法を説明します。

問題の発生

最初の状態では、以下のようなルーティング設定でした:

#gigtpdrihaeetutf__q_hbhaftupu_:uoiiebwlrtrr_etmlemwb/s:emieha::esbodnshom\'tiokiDGsoo.nri:nks/ut:.ecpHrtoau'otnlbauif\dtnigWmiggieins/tbng:ghhi.iuosytbotmh_keluwrbeS_beswhtieottboiehkno\gcoFsoko'n'rfmi\gSuertattiinogns'Form'

この設定では、administer site configuration権限を持つ管理者のみがアクセス可能で、一般ユーザーはアクセスできませんでした。

解決方法1: 専用権限の作成

まず、専用の権限を作成します。github_webhook.permissions.ymlファイルを新規作成:

acctdeiestsslcerg:iipt'thAiucobcne:wses'bAhGloilotokHwusbuestWeteribsnhgotsoo:kaScectetsisngGsi'tHubwebhookconfiguration.'

そして、ルーティングファイルを更新:

#gigtpdrihaeetutf__q_hbhaftupu_:uoiiebwlrtrr_etmlemwb/s:emieha::esbodnshom\'tiokiDGsoo.nri:nks/ut:.ecpHrtoau'otnlbauif\ctnigWciggieens/tbsg:ghhs.iuoytbogmh_kiluwtbeSh_beuwhtbeotboiwhkneo\gboFshko'o'romk\SseettttiinnggssF'orm'

問題の発覚: /adminパスの制限

しかし、この変更だけでは解決しませんでした。Drupalでは/admin配下のパスは管理エリアとして扱われ、追加の権限チェックが行われるためです。

解決方法2: パスの変更

根本的な解決として、パスを管理エリア外に移動:

#gigtpdrihaeetutf__q_hbhaftupu_:uoiiebwlrtrr_etmlemwb/s:emiehg::esboinshot\'tiokhDGsoo.uri:nksbut:.e-pHrtwau'otelbauib\ctnhgWcigoieensotbsg:khhs./uoysbogme_kiltwtteShibeunhtbgotsoiw'kne\gbFsh#o'oromk\SseettttiinnggssF'orm'

新たな問題: 管理画面からの消失

パスを移動すると、今度は管理画面の設定一覧から項目が消失 してしまいました。

最終解決: メニューリンクの手動追加

この問題を解決するために、github_webhook.links.menu.ymlファイルを作成:

gittdrpwhieoaeutsuriblcteg_erenhw:i_ttepn::b'tahGims1oioey0otn:skH:t.ugesb'imeCt.tWohatenudibfbmnhi_igogwnsoue_:krbcehoSoneGoftikitt.giHs_nuesgbtestr'wivenibgchseosoksettings.'

これにより、パスは/github-webhook/settingsのままで、管理画面の「サービス設定」配下にもメニュー項目が表示されるようになります。

配置場所のカスタマイズ

parentの値を変更することで、管理画面内の表示場所を調整できます:

  • system.admin_config_services - 「サービス設定」配下
  • system.admin_config_system - 「システム設定」配下
  • system.admin_config_development - 「開発設定」配下
  • system.admin_config - 「設定」のトップレベル

.links.menu.ymlファイルの代わりに、モジュールファイル内でフックを使用することも可能です:

f}un$]Icl;mti'''''pintrdpwlokioeaeenstusrim[ltcegeg'eernhnig'_ittttinp''sht=atuh>mi==hbueo>>o_b''now_G''1kewi=s0_bet>=y,mhbH>seohu'tnoobg'eukoiCm__kWto.lm.ehnaiesbufdnnehbimkuto_gis_towun_liker_dinbecingShoskseoGncs'toifo_]tktivdi.Hgei=nsu_rsgebsec[stedo'twr_v,ievaenbilrghctesoeed'osr_,k'(a,)ls.teetrt(i&n$glsi.n'k,s){

権限の付与

最後に、管理画面の「ユーザー権限」ページで、適切なロールに新しく作成したaccess github webhook settings権限を付与します。

まとめ

Drupalで管理者以外のユーザーに設定画面へのアクセスを許可するには:

  1. 専用権限の作成 - .permissions.ymlファイルで新しい権限を定義
  2. パスの変更 - /admin配下から通常のパスに移動
  3. メニューリンクの追加 - .links.menu.ymlで管理画面に項目を表示
  4. 権限の付与 - 管理画面で適切なロールに権限を設定
  5. キャッシュクリア - drush crで変更を反映

これらの手順により、柔軟な権限管理が可能になり、プロジェクトのニーズに応じたアクセス制御を実現できます。

変更を行った際は、必ずdrush crでキャッシュをクリアすることを忘れずに!

さいごに

間違っている点もあるかもしれませんが、参考になりましたら幸いです。