メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • 申請/承認フローを作成します

申請/承認フローを作成します

drupal
flag
views
rules

業務上に、申請/承認フローがよく利用されます(例えば、ユーザーがある権限を申請して、管理者が申請一覧を確認しながら、承認/拒否操作を行います)。Durpalの各種モジュールを利用して、この承認フローの作成が可能です。

この申請/承認フローは以下のステップから構成され

  • ユーザーがあるリンク/ボタンを押して、ある申請(例:権限変更申請)を行います
    • 決まった承認権限ルートにある管理者に申請者リストが表示されます。
    • 申請メールを管理者に送信します
    • 管理者が承認/拒否される前に、ユーザーが申請取消の取り消すが可能
  • 管理者が申請者管理画面を参照して、承認/却下操作を行います
    • 管理者が申請者一覧の参照ができます。
    • 申請内容を審査して、承認/拒否を操作します。
    • ユーザーの申請状態を変更します(申請のキャンセルができないようにします)
    • 承認/拒否結果をユーザーにメールで送信します。

要件をイメージは以下のよう:

必要なモジュールと用途

  • Flag:申請中の状態管理、承認/却下前にキャンセルが可能にします。
  • Views:Flagがオンになっているユーザー/コンテンツ一覧を表示し、承認/却下リンクを表示します。
  • Rules:承認/却下リンクが押されたら、承認/却下の処理を行います。

承認申請例、説明の前提

  • 申請要件例: ユーザーが「登録ユーザー」権限から「投稿者」権限に変更申請
  • サイト管理者がユーザーの権限変更申請を承認/却下審査をして、承認・却下操作を行います。
  • 「投稿者」権限が何のコンテンツを作成などはここで議論しないし、「投稿者」権限が作成済みとなります
  • ここで、「登録ユーザー」はDrupalの「認証済みユーザー」ではありません。「登録ユーザー」はある特定な権限を付与したユーザーとなります。(違う権限を分けたので、「認証済みユーザー」権限は利用しない)

Flagで要件申請ボタン/リンク

  • Flag管理画面(ホーム » 管理 » サイト構築 » Flags)で、「投稿者権限申請」Flagを新規作成します
    • Flag タイプ: ユーザー 
    • Global flag : チェックしない(ユーザー単位でのFlag管理)
    • Flag link text: 投稿者権限申請
    • Unflag link text: 投稿者権限申請の取消 (承認/却下前に申請の取消)
    • Flag access: 「登録ユーザー」をチェック
    • ディスプレイオプション: 適切な場所にチェックして、上記フラグを表示させます
  • 上記フラグ(投稿者権限申請)を押してから、すぐに「投稿者権限申請の取消」リンクが表示されます

Viewsで申請ユーザー一覧表示、承認/却下リンク

  • Viewsの管理画面(ホーム » 管理 » サイト構築 » ビュー)で、ユーザー一覧ビューを作成します
    • 表示: ユーザー
    • ページ作成: チェックします
    • パス: 適切なパス(例:/approve-editor-permission)
    • 表示形式: テーブル
    • ほかの項目は初期値のままにします
  • ビューを作成したら、ビューの詳細画面で表示内容を設定します。
    • 高度ー>「リレーションシップ」: Flags: Flagging flag を追加します
      • 識別子: 適切な名前につける
      • Flag: 上記作成したフラグ名を選択します
      • By: Any User
    • 「フィールド」項目に適切な項目を追加します
      • 名前、Flagged time(申請日時)などを追加します
      • グローバル: 独自のテキスト を追加します(承認リンク)
        • テキスト内容: <a href="/approve-user-application?user-name=[name]&user-id=[uid]&user-mail=[mail]">承認<a>
        • 上記リンクにあるパラメータ:user-name,user-id,user-mailはRulesのアクション作成時にユーザーの情報を渡します
        • Token: name, uid, mail は画面に非表示フィールドから取得します(ここでTokenモジュールがインストールされている前提)
    • 上記設定で、フラグが立てたユーザー一覧表示と各ラインに「承認」リンクが表示されます。

Rulesで「承認」リクエストの受け取り、承認処理

  • Rules単体ではURLのパス部分のチェック、パラメータチェックとパラメータ取得機能はありません。ここで、以下の二つサブモジュールが必要となります。
    • Rule URL Argument:渡されたURLにあるパラメータ(例:http://abckefj.co.jp/directory?user-mail=xxxx@example.co.jpにあるuser-mail…)の存在をチェック、パラメータをアクション利用できるTokenへの変換
    • Path Rules:渡されたURLのパス部分(例:http://abckefj.co.jp/directory)のチェックします
  • Rules管理画面(ホーム » 管理 » 環境設定 » ワークフロー)で新規ルールを作成します
    • 名前: 適切な名前を入力します
    • Event: Drupalが初期化されている
    • 条件: データ比較 
      • And条件グループを作成します(以下の条件をこのグループに入れます)
      • Check Path条件を作成します
        • Condition追加メニューにある「Path」(Path Rule)から「Check path」を選択します
        • 値:Viewsで設定されたURLのパス:「/approve-user-application」
      • Check if URL argment exists条件作成
        • Condition追加メニューにある「URL argument」(Rule URL Argumentモジュール)から「Check if URL argument exists」を選択します
        • 値:Viewsで設定されたURLにあるパラメータ:「user-mail」
      • Check if URL argment exists条件の「user-id」と「user-name」をそれぞれ作成します
    • アクション:ユーザーの権限変更、メール送信、画面のリダイレクトなど
      • ​URLからパラメータを取得して、アクション用のTokenを作成します
        • ​Action追加メニューにある「URL argument」(Rule URL Argumentモジュール)から「Provide URL argument value」を選択します
        • 値:text
        • URL ARGUMENT NAME:user-mail (user-id、user-nameも次に作成)
        • 出力された変数のセクションで適切な変数名を作成します
          • 変数ラベル:User Mail from URL
          • 変数名:user_mail_from_url
      • 上記ステップで複数の変数(user id、user name)を作成します
    • PHPコードでユーザー権限の追加/削除操作を行います(通常なアクションはユーザーの取得などができないため)
      • 「acctionを追加」メニューで「独自のPHPコードを実行」を選びます
      • 以下のコードを入力します
        // ユーザーオブジェクトの取得
        $user = user_load( $user_id_from_url );
        // すべての役割を取得
        $roles = user_roles(TRUE);
        // 編集者役割
        $editor_rid = array_search('編集者', $roles);
        // 登録者役割
        $register_rid = array_search('登録者', $roles);
        // ユーザー役割の変更
        if( isset( $user ->roles) ){
          // add role: 編集者
          user_multiple_role_edit(array($user->uid), 'add_role', $option_rid) ;
          // remove role: 登録者
          user_multiple_role_edit(array($user->uid), 'remove_role', $staff_rid) ;
        }
    • メール送信アクション作成
      • 「acctionを追加」メニューで「システム」のメール送信を選びます
      • 送信先に上記作成した「user_mail_from_url」をTokenとして入力します
      • 題名、本文などの項目は適切で入力します
    • ページのリダイレクト設定(Viewsで設定したURLは実ページはないので、処理完了後に、ページをリダイレクトする必要がある)
      • ​「acctionを追加」メニューで「システム」のページリダイレクトを選びます
      • リダイレクト先は適切のURLを入力します。
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)