| Install | |
|---|---|
composer require nextmigrant/magic-link-login |
|
| Latest Version: | 1.0.2 |
A scaffolding package for Magic Link Authentication in Laravel and Filament applications. This package installs the necessary files into your Laravel application and then removes itself, leaving you with full control over the code.
Require the package as a development dependency:
composer require --dev nextmigrant/magic-link-login
Run the install command:
php artisan magic-link:install
This command will interactively guide you through the process:
routes/admin/admin.php.HasMagicLogin trait into app/Models/User.php.composer remove) to keep your project dependencies clean.Run migrations:
php artisan migrate
Disable Default Filament Login:
In your app/Providers/Filament/AdminPanelProvider.php, you must remove or comment out the ->login() method to disable the default Filament login page. This package provides its own authentication flow.
public function panel(Panel $panel): Panel
{
return $panel
// ...
// ->login() // <--- Remove this line
// ...
}
Explore the Code: After installation, the code belongs to you! You can find the key files here:
app/Http/Controllers/Admin/AuthController.phpapp/Livewire/Admin/Auth/Login.phpapp/Services/Auth/AuthenticationService.phpresources/views/livewire/admin/auth/login.blade.phpFeel free to modify them to suit your project's needs.
By default, the magic link emails are sent using Laravel's queue system to ensure a fast response time for the user.
Run the Queue Worker: Ensure you have a queue worker running in your environment (local and production) to process the emails:
php artisan queue:work
Customizing Delivery:
If you prefer to send emails synchronously (immediately) or use a specific queue connection, you can modify the handleLogin method in the published Livewire component:
File: app/Livewire/Admin/Auth/Login.php
// Default (Queued)
Mail::to($user)->queue(new MagicLoginLink($temporaryLoginLink));
// Synchronous (Immediate)
Mail::to($user)->send(new MagicLoginLink($temporaryLoginLink));
While this package is designed for Filament, it can be used with any Laravel application.
If you are not using Filament, you simply need to update the redirect destination after a successful login.
Open app/Http/Controllers/Admin/AuthController.php.
Locate the login method.
Change the redirect to your desired dashboard route:
return redirect()->to(
// Filament::getPanel('admin')->getUrl() // <--- Remove this
route('dashboard') // <--- Add your own route
);
The MIT License (MIT). Please see License File for more information.