Once you create a Filament User resource - you will get a typical user creation form, which will instantly create a new user. What if you want to send an invitation first and allow the User to join from an email? You can do that, too, but there is some custom work needed.

Let's build an invitation System for our Filament!
Setup
Our project setup includes the following:
- Fresh Laravel project
- Filament installation
- Filament setup
Next, we will work on the default User model and resource.
Creating User Resource
We have to create our User resource to manage our Users. Let's do this:
php artisan make:filament-resource User --generate
Create Invitation Model and Database tables
Let's create our migration:
Migration
Schema::create('invitations', function (Blueprint $table) { $table->id(); $table->string('email'); $table->timestamps();});
Then, we can fill our Model:
app/Models/Invitation.php
class Invitation extends Model{ protected $fillable = [ 'email', ];}
As you can see from the setup, it's a pretty basic Model. All we care about - is the email address being invited.
Modify UserResource Create Button Action - to Invite the User
Next on our list, we need to modify the User Create button. We don't want to create the User right away. We want to invite them via email first. So let's...
Premium Members Only
This advanced tutorial is available exclusively to Laravel Daily Premium members.
Already a member? Login here
Premium membership includes:
Comments & Discussion
In one of your classes you created a step two login. My question is can that be done with filament as well? And if so; can you create a tutorial showing us how to do it?
Ive upgraded Laravel 9 to Laravel 10 and installed Filament, set up User Resource etc and started to follow your tutorial with swapping the User Resource button to Invite.
Adding the routes/web.php code is throwing the following:
Question can this be done using a Role? Say you are hiring someone and want them to fill out a different Registration form that has different questions related to the job that they are being hired for.
And if so can you give an example for us?
Did some small changes in my invite, made a check first if the user allready exist, and change the create to updateOrCreate, so I don't end up with the same email multiple times in the database
Altso added roles, so in App/Livewire/AcceptInvitation.php I changed the line on create to
Thank you for this! For the unique check I just use this one liner:
in the Add E-Mail Form