Drupalで役割や権限を管理したり「Workflows」「Content Moderation」モジュールを使ってワークフローを設定する方法

モチヤスタッフ

Drupalでは「複雑なワークフローや、権限の設定ができる機能」が公式で備わっています。

大企業など、管理画面を触る人数が多いと細かい権限設定が必要です。

  • 特定コンテンツを作成はできるが、公開はできない人
  • 特定コンテンツの作成も公開もできる人
  • サイトの設定やモジュールの操作などコンテンツ関連以外の操作もできる人

また、役割だけでなく「このコンテンツは誰かもう1人上の立場のユーザーにチェックしてから公開してもらわないといけない」といったワークフロー(承認フロー)も設定できます。
そうすることで「確認 → 公開」の手順を徹底できます。

今回はDrupalの役割や権限、ワークフローの設定方法についてまとめます。
Drupalでの運用を検討されている方は、実際に運用するときにどのように設定したり、管理するのかぜひ参考にしてください。

役割と権限の管理

Drupalではログインするユーザーアカウントごとに「役割」を設定します。
この役割に、細かい権限を指定してなにができるのか設定します。

役割の作成

ユーザーの役割を追加する場合は、管理画面の[ユーザー]を選択して、[役割]タブを選択します。

管理画面「ユーザー」内の「役割」タブを選択。

役割の一覧が表示されるので、ここで「役割の追加」を選択すると、追加画面に移動します。

役割の追加画面

ここで管理できるのはあくまで役割の名前だけで、権限に関してはあとで別画面で設定します。
とりあえず「役割名」を入力して「保存」を選択すれば追加されます。

権限の設定

役割を追加したら、今度は[権限]タブへ移動します。
ここでそれぞれの役割でできることを設定します。

「権限」タブを選択

左側に何ができるか書かれていて、右側には役割名の下にチェックボックスが並んでいます。
使えるようにしたい内容を見つけたら、それに対応するチェックボックスにチェックを入れます。

あとは一番下の「権限の保存」で保存すれば完了です。
ちなみに、「管理者」だけはすべての権限を持っていてチェックを外せません。

管理者の役割を変更したい場合は[役割の設定]タブに移動して、「管理者用の役割」で別の役割名を選択すれば変更できます。

「役割の設定」にて管理者用の役割を変更可能

ユーザーに役割を反映

あとはユーザーに役割を紐付けます。
[リスト]タブを選択するとユーザーが一覧で表示されるので、設定したいユーザーの「編集」ボタンを選択します。

管理画面「ユーザー」から、設定したいユーザーの編集ボタンを選択。

[編集]タブへ移動して「役割」で、設定したい役割にチェックを入れます。
あとは1番下の「保存」ボタンを選択すれば反映完了です。

役割を選択。

新規ユーザーを追加するときも同じで、「ユーザーを追加」ボタンを選択後、「役割」でチェックを入れるだけで設定できます。

これでユーザーによってできる操作とできない操作を管理できます。

「WorkFlow」「Content Moderation」を使用する場合

さらに細かい権限やワークフローを作成したい場合は「WorkFlow」と「Content Moderation」という公式が提供しているコアモジュールを使用します。

この2つを使うことで、もっと複雑な「編集者が非公開の状態で編集して、公開するのは管理者が行う。もし修正がある場合はまた編集者に差し戻す」ようなワークフローを実現できます。

モジュールの有効化

まずはモジュールを有効化します。
Drushを使っている場合は下記のコマンドで有効化できます。

#「WorkFlow」モジュールの有効化
drush en workflow
#「Content Moderation」モジュールの有効化
drush en content_moderation

Drushを使っていなくて、管理画面から有効化する場合はメニューの[機能拡張]をクリックして、モジュール一覧の中から2つを探します。

モジュールのインストール。

チェックを入れてページ最下部の「インストール」をクリックすれば完了です。

ワークフローの作成

管理画面の[環境設定]→[ワークフロー]を選択してワークフロー一覧画面に移動します。

管理画面「環境設定」から、「ワークフロー」を選択。

デフォルトでは「Editorial」ワークフローが用意されていますが、今回は試しに新規で作成します。
まず、「ワークフローの追加」を選択します。

ワークフロー画面内の「ワークフローの追加」を選択。

「ラベル」の入力と「ワークフロー・タイプ」の選択画面が表示されます。
ラベルはワークフローの名前を入力して、ワークフロー・タイプは「コンテンツモデレーション」しかないので、それを選択します。

ラベルとワークフローのタイプを選択。

「保存」を選択すると、ワークフローの編集画面に移動します。

設定したワークフローの編集画面。

ワークフローは「ラベル」「状態」「推移」「このワークフローの適用先」「ワークフローの設定」の5つの項目を設定して管理します。
この中の「ラベル」に関しては、先ほどワークフローの追加時に設定したテキストが入っています。

設定項目 内容
ラベル ワークフローの名前を入力する
状態 「下書き」や「レビュー待ち」「公開済み」などのコンテンツの状態を設定する
推移 「公開済み」は「レビュー待ち」の状態からじゃないと変更できないなど、状態が変わる流れを設定する
このワークフローの適用先 ワークフローを適用するカスタムブロックタイプやコンテンツタイプを設定する
ワークフローの設定 ワークフローのデフォルトの状態を設定する

「状態」の設定

「状態の設定」。ユーザーがどの状態だと編集できるかの設定を行える。

状態はコンテンツの状態のことを指して、この状態をもとにどの役割のユーザーがどの状態だと変更できるのかなど、ワークフロー設定の中心になります。

デフォルトだと「Draft」「Published」の2つが用意されていて、この2つは必須です。
この他に「新しい状態を追加」から状態を追加したり、「編集」をクリックすると名前の変更ができます。

新しい状態を追加より、名前を変更可能。

たとえば「Review」という状態を用意すれば、下書きが完成してレビュー待ちだと分かる状態が追加できます。

推移の設定内容。

「推移」の設定

推移では状態がどのように変化するか設定します。
「送信元」と「宛先」を指定することで、どこから状態が渡されて、次はどの状態に変化するのかを指定します。

送信元を制限することで、例えば「Draft」をいきなり「Published」にすることはできなくて、「Review」状態からじゃないと「Published」にできないという風に制御できます。

こちらも先ほどの「状態」と同じで「遷移を新規追加」から追加したり、「編集」から名前や設定の変更ができます。

状態と同様。新規追加、編集から設定の変更が可能。

「このワークフローの適用先」の設定

「カスタムブロック タイプ」「コンテンツ タイプ」を選択できる。

このワークフローが、どのコンテンツで適用されるのか設定します。
「カスタムブロック タイプ」と「コンテンツタイプ」があり、それぞれ「選択」ボタンをクリックするとモーダルが表示されます。

ワークフローの適用先内の選択後、モーダルが表示する。

モーダルの中から、適用したいタイプにチェックを入れて「保存」を選択すれば設定完了です。

「ワークフローの設定」でデフォルト状態の設定

デフォルトの状態の設定することができる。

最後に「ワークフローの設定」にある「デフォルトのモデレーションの状態」で、1番最初の状態を選択します。

ここで「Draft」を指定すると、このワークフローを使用したコンテンツを新規作成するときは「Draft」から始まるようになります。

ワークフローの権限を設定

最後にワークフローの権限を設定します。 管理画面の[ユーザー]を選択して、[権限]タブを選択して、先ほどユーザーの権限を設定した画面に移動します。

管理画面の[ユーザー]の「権限」タブから役割ごとにどの推移を実行できるかチェックを入れる。

ここの「Content Moderation」に「推移」が追加されています。 どの役割の人がどの推移を実行できるのかチェックを入れて設定します。

これでワークフローの設定は完了です。

実際にワークフローに沿ってコンテンツを作成

ワークフローの設定ができたので、実際にコンテンツを作成します。
「このワークフローの適用先」で指定したコンテンツに対してでないと適用されていないので注意してください。

無事設定されていると、コンテンツの追加画面下の「保存」ボタンの上に「保存: Draft」のように状態のセレクトボックスが表示されます。

実際にコンテンツを作成する。保存ボタン上に状態のセレクトボックスから、設定した状態を選択できる。

ここで「Draft」のまま記事を保存したり、「Review」などの次の状態に変更して保存します。

次の状態に変更したら、今度はその次の権限を持っている人が記事を開くと、さらにその先の状態に変更できます。
また、[最新バージョン]タブに移動するとログメッセージを残して状態の変更ができます。

ワークフローの適用先を選択する。

ここで「Draft」に差し戻したり、コンテンツに問題がなければ「Published」にして公開します。

役割や状態を増やすことで複雑なワークフローにも対応できる

今回は「誰かもう1人上の立場のユーザーにチェックしてから公開してもらう」というワークフローでしたが、役割や状態を増やすことでさらに複雑なワークフローにも対応できます。

サイトを管理するユーザーが増えれば増えるほど、このようなワークフローをきちんと整えておかないと、トラブルにも繋がります。
Drupalはここまで公式で対応の機能として対応できるので、きちんと公開までのフローを整理したい場合はぜひ検討してみてはいかがでしょうか。

モチヤスタッフ

Drupalなど技術に関する投稿をモチヤのスタッフが行っています。

モチヤスタッフ の書いた記事一覧

最新の関連記事

Contact お問い合わせ

Drupalでの開発・運用、サーバー構築、Webサイト構築全般、制作費用などに関してお気軽にご相談ください。