Custom redirect after login from livewire component
Hello everyone!
I want to redirect to the right panel based on user role.
I have two panels:
-- Role1Panel
-- Role2Panel
and i have three type of users:
-- admin user: he have to redirect to Role1Panel but he can switch the panel (i use Panel Switch by Bezhan Salleh)
-- role1 user: he have to redirect to Role1Panel and he cannot switch the panel
-- role2 user: he have to redirect to Role2Panel and he cannot switch the panel
Each users have a panel column for identify own panel.
I want the"/login" route, i don't need the default login routes of both panels, so i create a Login Livewire component that it use "cleaned" authenticate function, copied by Filament Login page.
Following this guide: https://v2.filamentphp.com/tricks/customize-redirect-after-admin-login, i create a custom LoginResponse class that it use the panel user column for redirect.
The first time login everything works but from there on I am always redirected to the panel of the first login and i don't know why.
This is my authenticate function:
public function authenticate(){
if (! Filament::auth()->attempt(['email' => $this->email, 'password' => $this->password], true)) {
$this->throwFailureValidationException();
}
session()->regenerate();
return app(LoginResponse::class);
}
And my LoginResponse class:
namespace App\Http\Responses;
use Filament\Http\Responses\Auth\Contracts\LoginResponse as LoginResponseContract;
class LoginResponse implements LoginResponseContract
{
/**
* @param $request
* @return \Illuminate\Http\RedirectResponse
*/
public function toResponse($request)
{
$panel = $request->user()->panel ?: 'ramerino';
return redirect()->intended("/$panel");
}
}
thanks in advance!
2 Replies
In login response I was using:
@toeknee Do you think that is there a problem in my authenticate function? Because my problem is: if i login for the first time with role1 user, i do the logout and then try to login with role2 user, the application recognizes the right user (role2 user) but the system continue to redirect me to role1 user panel. Is it possible that there is a problem with session? or anything else?