ログイン成功時に追加で処理を実装するのはどこが良いか

2015年5月27日 at 22:47

サイトへのログイン認証成功後に独自の処理を実装しようとしています。

・処理はサーバサイド(php)で実装する
・独自処理の結果(文字列)をCookieにセットしたい
・デフォルト(concrete)以外の認証タイプは使用しない

実装場所はどこが適切でしょうか?

名前から想像するに、AuthenticationTypeController#completeAuthentication()に実装
できそうですが、ここに手を入れて良いものかどうか迷っています。
また、ここからCookieに値を設定する方法もわかっていないです。

タグ:

Re: ログイン成功時に追加で処理を実装するのはどこが良いか

2015年5月27日 at 23:28
正攻法としては、on_user_login イベントにフックする方法です。

イベントに処理をフックする方法はまだ当サイトにドキュメントを作れていないのですが、application/bootstrap/app.php 内のコメントにサンプルコードがあり、このファイルに記述することで行えます。
 

Re: ログイン成功時に追加で処理を実装するのはどこが良いか

2015年5月27日 at 23:58
hissyさん

返信有難うございます。

app.phpでEvents::addListener()でログイン認証が通った時のイベントを拾うことができました!

、、、が、ログイン時に「2週間ログインしたままにする」をONにしてログインした後、
ブラウザを終了し、再度ページにアクセスする(Cookieが使われてログイン画面が省略される)
と、このイベントは走らないようです。

登録可能なイベントの一覧などのドキュメントはあるでしょうか?
 

Re: ログイン成功時に追加で処理を実装するのはどこが良いか

2015年5月28日 at 1:29
自己レス(未解決)です。

5.6ですが、イベントの一覧のドキュメントがありました。
http://www.concrete5.org/documentation/developers/5.6/system/events

ここに記載されているUserEventsを色々試しましたが、Cookieでの認証で発火するイベントは無いようでした。

ログインのform.phpから「2週間ログインしたままにする」のチェックボックスを削除してしまうか、、、、