ECAモジュール触ってみた (ログインリダイレクトなど)

hagi に投稿

DrupalのECAモジュールが実用段階に入ってきている。ノーコード/ローコードでアプリケーションが構築できる環境が整いつつあると実感した。

ECAモジュールには昨年から注目しているが、2022年7月22日に無事正式版1.0.0がリリースされ、その後順調にアップデートされて、2022年10月17日現在は、1.0.4となっている。利用サイト数は220とまだまだ少ないが、issueを読むとアクティブなユーザーがいることが伝わってくる。インストールはcomposerで行う。

composer require drupal/token drupal/bpmn_io drupal/eca

今回のユースケースとしては、

  1. ログイン時にアカウント情報ページではなくフロントページにリダイレクトしたい
  2. ただし、パスワードリセットのワンタイムログインの場合にはリダイレクトしてはいけない
  3. パスワードリセット(アカウント情報Editページで保存)した後はEditページに残らずにアカウント情報ページに遷移したい

とした。こういったニーズはしばしばあり、ユーザーの属性に基づいて、リダイレクト先も変えたい場合があり、ベースとなるユースケースとしては適切なものだと思う。

composerインストールが終わったら、拡張機能を有効化する。

画像

「モジュール BPMN.iO for ECA をインストールするには、依存する ECA BPMN, ECA Core モジュールを有効にしなければなりません。」と警告が出るが、問題ないので実行する。

完了すると環境設定のワークフローにECAが出てくるようになるので、ここでAdd new modelする。

画像

BPMNの編集画面が出てくるので、起点となるイベントを作る。

画像

アクションを追加して、リダイレクトを貼り付ける

画像
画像

名前をつけ忘れていたので、記入し保存して閉じる。

画像
画像

この段階でログアウトしてログインすると、フロントページにリダイレクトされる。ただし、ログイン時にパスワードの再設定をすると、具合が悪い。

画像
画像

ここでログインするとパスワード変更画面でなくフロントページにリダイレクトされるので、パスワードのリセットができない。プロフィールの編集で、パスワードを入れようとすると「現在のパスワード」が求められるが、リセットしたい人は入力できないのである。

要件2に対応するため、ECAのBPMN画面でフロントページにリダイレクトするの前の矢印を選択して、条件を設定するが、その前に「ECA Base」サブモジュールを有効化しておく。

画像
画像
画像

この状態で保存すれば、ログインリダイレクトが行われるのは、ページURLが/user/loginを含むケースだけになり、ワンタイムログインの場合は、リダイレクトされなくなり、無事にパスワード設定が可能になる。

最後に要件3のアカウント情報編集後の挙動を設定する。まずは、ユーザーエンティティ更新イベントを起点として定義する。

画像
画像

ついで、アカウント情報ページへのリダイレクトを設定する。

画像

この設定で要件3が実現できる。

最初は、使い方がなかなか腑に落ちなかったが、情報ページも充実しており、慣れてしまえば非常に簡単に設定できる。configuration entityなので、開発、ステージ環境、本番への適用もスムーズに実現できるのも間違いない。

Entityの新規作成もできるので、Webformを起点として、Views Bulk Operations等も応用すれば、相当なアプリケーションを構築可能だろう。

 

タグ
feedback
こちらに記入いただいた内容は執筆者のみに送られます。内容によっては、執筆者からメールにて連絡させていただきます。