マルチログイン環境のサイトを構築していると、管理者が会員さんやメンバーさん、ユーザさんになりすまして代理ログイン出来るといろいろと都合が良いことがある。
実装方法はいろんな方法があるが、Laravelフレームワークにいちいち綺麗に沿ったやり方でなくて良いからサクッと実装したい人向け。
※セキュリティーは、それぞれ強固なものにして下さい!!
管理画面側
普通、管理画面側にユーザ一覧のようなものがあって、そこに「代理ログイン」ボタンを設置し、ユーザ側の未ログイン状態でアクセス可能なルートにアクセスする。
ユーザ側
管理画面から遷移されたアクション
public function index($id)
{
// 遷移前のページを取得
$previous = url()->previous();
// 管理画面のメンバー一覧ページから遷移した場合しか代理ログインはさせない
if($previous != url('')."遷移前のURL") abort(404);
$user = User::find($id);
// ログイン
Auth::login($user);
return redirect('/home'); // ユーザ側のページにリダイレクト
}