I have a vendor and customer in login, It works fine and redirects to the vendor or customer dashboard but how can I do the same after registration?
Register Controller
protected $redirectTo = '/';
Login Controller
<?php
public function login(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required|min:6',
]);
if (Auth::guard('web')->attempt(['email' => $request->email, 'password' => $request->password, 'active' => 1, 'role_id' => 2], $request->remember)) {
return redirect()->intended(route('customer.dashboard'));
} elseif (Auth::guard('web')->attempt(['email' => $request->email, 'password' => $request->password, 'active' => 1, 'role_id' => 1], $request->remember)) {
return redirect()->intended(route('vendor.dashboard'));
}
return redirect()->back()->withInput($request->only('email', 'remember'));
}
Not sure which version you are using I'm posting my answer for Laravel 5.7+
After registration Laravel call this method:
// Auth\RegisterController
/**
* The user has been registered.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function registered(Request $request, $user)
{
// Assign role to $user. Then you can add condition.
if($user->hasRole('admin'){
return redirect()->route('xxx');
}
return redirect()->route('default');
}
Hope it can help you. Good Luck!
You can try something like this instead
<?php
public function login (Request $request) {
$this->validate($request,[
'email'=>'required|email',
'password'=>'required|min:6',
]);
$authenticated = Auth::guard('web')->attempt(['email'=>$request->email,'password'=>$request->password], $request->remember));
if (!$authenticated) {
return redirect()->back()->withInput($request->only('email','remember'));
}
// We already have a auth user
$redirectRoute = $this->determineBackendRoute();
return redirect()->intended(route($redirectRoute));
}
/**
* Determine currently authenticated users destination backend
* */
public function determineBackendRoute () {
$role = auth()->user()->role_id;
switch ($role) {
case '1':
$route = 'vendor.dashboard';
break;
case '2':
$route = 'vendor.dashboard';
break;
default:
$route = 'home';
break;
}
return $route;
}
Overwrite the authenticated method in LoginController
protected function authenticated(Request $request, $user)
{
//write your logic's here
if ($user->role_id == 1) {
return redirect()->route('write the route name');
}
return redirect('/home');
}
Do something like this:
protected $redirectTo = '/user/home';
If based on usertype, do a condition statement that changes the value of $redirectTo
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.