The package will be sending out invite emails by listening to the 'created'-event on user model. The user can click a link in the email to setup their password.
Also included is a expired check on the link.
The link will be as following: domain.tld/invite/accept?acceptId=<uuid>&hash=<hash>
You can install the package via composer:
composer require concept7/filament-invite
Register the plugin in your panel provider:
use Concept7\FilamentInvite\InvitePlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugin(new InvitePlugin());
}
You can publish and run the migrations with:
php artisan vendor:publish --tag="filament-invite-migrations"
php artisan migrate
Optionally, you can publish the views using
php artisan vendor:publish --tag="filament-invite-views"
use Concept7\FilamentInvite\Models\Traits\Invitable;
In app/Mail, create SendInviteMail.php, e.g.
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use App\Models\User;
use Concept7\FilamentInvite\Contracts\SendInviteMail as SendInviteMailContract;
class SendInviteMail extends Mailable implements SendInviteMailContract
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
/**
* Create a new message instance.
*/
public function __construct(
private User $user,
private $url
) {
//
}
/**
* Get the message envelope.
*/
public function envelope(): Envelope
{
return new Envelope(
to: $this->user->email,
subject: 'You are invited to join ' . config('app.name'),
);
}
/**
* Get the message content definition.
*/
public function content(): Content
{
return new Content(
markdown: 'filament-invite::mail.invite',
with: [
'user' => $this->user,
'link' => $this->url,
]
);
}
}
If for some reason you need to listen to the InviteAccepted Event, you can register a listener handling a InviteProcessedEvent. Register the listener in your EventServiceProvider.
InviteProcessedEvent::class => [
InviteProcessedListener::class,
]
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.