Laravel:管理者によるregister実行後の動作を変える
Laravel:register実行後の動作を変える
前の記事では『管理者によるユーザー登録/guestのユーザー登録不可』の実装について書きました。
前回までの状態ですと嫌な動きがあります。
例えば、Adminという管理者でTESTというユーザーを作った場合、新規登録後はTESTでHomeへredirectされてしまいます。ログインテストが出来ると言えば聞こえはいいですが、気持ちいい動作ではないですよね。
新規ユーザー登録をしたらAdminのままHomeへ移動する様に作り変えていきます。
RegistersUsers.phpを変更
【vendeor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php】
これを弄ります。
前回の記事でルーターに記載したレジスターが見ている先がここです。createとその後の動作は 『public function register』に記載されています。
1 2 3 4 5 6 7 8 9 10 11 |
public function register(Request $request) { $this->validator($request->all())->validate(); event(new Registered($user = $this->create($request->all()))); $this->guard()->login($user); return $this->registered($request, $user) ?: redirect($this->redirectPath()); } |
解説するとこんな感じです。
- $this->validator($request->all())->validate();
※バリデータ - event(new Registered($user = $this->create($request->all())));
※クリエイト - $this->guard()->login($user);
※クリエイトしたユーザーでのログイン - return $this->registered($request, $user) ?: redirect($this->redirectPath());
※ログイン後TOPへリダイレクト
今回は『新規ユーザーでログインしない』『ログイン後TOPへリダイレクトする』なので邪魔者は項目3。
こいつをごっそり削ります。
1 2 3 4 5 6 7 8 9 10 11 |
public function register(Request $request) { $this->validator($request->all())->validate(); event(new Registered($user = $this->create($request->all()))); //$this->guard()->login($user); return $this->registered($request, $user) ?: redirect($this->redirectPath()); } |
上手くいきました?
これでも上手くいかない場合は項目4を [ return redirect(‘/home’); ] と入れ替えます。
何も考えずにhomeにリダイレクトしろ!という関数ですね。
ちなみに、ここを [ return view(‘/home’); ] とするとアドレスが /register のまま/homeが表示されました。
redirectしなくてはいけません。
まとめ
ずっと認証系のトレイトを追っていたからか、とてもスムーズに実装できました。
残るはユーザ一覧と管理者による変更機能。
頑張ります。
-
前の記事
Laravel:管理者のみに新規ユーザー登録(register)を許可 2019.01.18
-
次の記事
Laravel:ユーザー登録時にroleも一緒にcreateする方法 2019.01.19
コメントを残す