Filament provides a complete authentication system out of the box, including login, registration, password reset, email verification, and multi-factor authentication. You can customize every aspect or integrate with your existing authentication.
Implement the required contracts on your user model:
use Filament\Auth\MultiFactor\App\Concerns\InteractsWithAppAuthentication;use Filament\Auth\MultiFactor\App\Concerns\InteractsWithAppAuthenticationRecovery;use Filament\Auth\MultiFactor\App\Contracts\HasAppAuthentication;use Filament\Auth\MultiFactor\App\Contracts\HasAppAuthenticationRecovery;class User extends Authenticatable implements HasAppAuthentication, HasAppAuthenticationRecovery{ use InteractsWithAppAuthentication; use InteractsWithAppAuthenticationRecovery;}
class UserPolicy{ public function viewAny(User $user): bool { return $user->can('view_any_user'); } public function view(User $user, User $model): bool { return $user->can('view_user'); } public function create(User $user): bool { return $user->can('create_user'); } public function update(User $user, User $model): bool { return $user->can('update_user'); } public function delete(User $user, User $model): bool { return $user->can('delete_user'); } public function restore(User $user, User $model): bool { return $user->can('restore_user'); } public function forceDelete(User $user, User $model): bool { return $user->can('force_delete_user'); }}
The logout route is automatically registered. Customize the logout response:
use Filament\Auth\Http\Responses\Contracts\LogoutResponse;class CustomLogoutResponse implements LogoutResponse{ public function toResponse($request) { return redirect('/')->with('message', 'Logged out successfully'); }}
use Filament\Auth\Http\Responses\Contracts\LoginResponse;class CustomLoginResponse implements LoginResponse{ public function toResponse($request) { return redirect()->to('/admin/dashboard'); }}