LaravelのSentryパッケージでログイン処理後に、呼び出し元のページに戻る処理

ログインが必要なページにアクセスした際、ログイン済みでなければログインページに飛ばし、ログイン処理後に元のページにリダイレクトさせるという処理はよくあると思います。
LaravelにもとからあるAuthではRedirect::intended()を使い、前述の処理を簡単にできるようですが、Sentryパッケージを利用した場合、Redirect::intended()が使用できないようなので、代替案を考えました。

[php]//filter
Route::filter(‘auth’, function () {
if (!Sentry::check()) {
Session::put(‘loginRedirect’, Request::url());

return Redirect::route(‘login’);
}
});[/php]
[php]//認証処理
// 認証できたのでリダイレクト
// hasで調べなくても Session::get(‘loginRedirect’, ‘/home’);
// でもいいかもしれません。
if (Session::has(‘loginRedirect’)) {
// リファラがあれば、呼び出し元にリダイレクト
$redirect = Session::get(‘loginRedirect’);
Session::forget(‘loginRedirect’);

return Redirect::to($redirect);
} else {
// なければデフォルトのトップページに飛ぶ
return Redirect::route(‘home’);
}[/php]

Laravelエキスパート養成読本 [モダンな開発を実現するPHPフレームワーク!]

スポンサーリンク
レクタングル大