Package Data | |
---|---|
Maintainer Username: | spatie |
Maintainer Contact: | freek@spatie.be (Freek Van der Herten) |
Package Create Date: | 2019-11-12 |
Package Last Update: | 2025-01-31 |
Home Page: | https://freek.dev/1500-sending-a-welcome-notification-to-new-users-of-a-laravel-app |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2025-02-06 15:02:49 |
Package Statistics | |
---|---|
Total Downloads: | 538,340 |
Monthly Downloads: | 16,566 |
Daily Downloads: | 834 |
Total Stars: | 586 |
Total Watchers: | 13 |
Total Forks: | 50 |
Total Open Issues: | 0 |
Using this package you can send a WelcomeNotification
to a new user of your app. The notification contains a secure link to a screen where the user can set an initial password.
$expiresAt = now()->addDay();
$user->sendWelcomeNotification($expiresAt);
You can install the package via composer:
composer require spatie/laravel-welcome-notification
You must publish the migrations provided by this package by executing this command:
php artisan vendor:publish --provider="Spatie\WelcomeNotification\WelcomeNotificationServiceProvider" --tag="migrations"
Next, you must migrate your database.
php artisan migrate
You must apply the \Spatie\WelcomeNotification\ReceivesWelcomeNotification
trait to your User
model.
Next you'll need to create a controller of your own that will extend Spatie\WelcomeNotification\WelcomeController
. This controller will be used to show the welcome form and to save the password set by a user.
namespace App\Http\Controllers\Auth;
use Spatie\WelcomeNotification\WelcomeController as BaseWelcomeController;
class MyWelcomeController extends BaseWelcomeController
{
}
You'll have to register these routes:
use Spatie\WelcomeNotification\WelcomesNewUsers;
use App\Http\Controllers\Auth\MyWelcomeController;
Route::group(['middleware' => ['web', WelcomesNewUsers::class,]], function () {
Route::get('welcome/{user}', [MyWelcomeController::class, 'showWelcomeForm'])->name('welcome');
Route::post('welcome/{user}', [MyWelcomeController::class, 'savePassword']);
});
The welcome
view that ships with the package, will be rendered when somebody clicks the welcome link in the welcome notification mail. You should style this view yourself. You can publish the views with this command:
php artisan vendor:publish --provider="Spatie\WelcomeNotification\WelcomeNotificationServiceProvider" --tag="views"
Here's how you can send a welcome notification to a user that you just created.
$expiresAt = now()->addDay();
$user->sendWelcomeNotification($expiresAt);
After the a user has successfully set a new password the sendPasswordSavedResponse
of the WelcomeController
will get called.
use Symfony\Component\HttpFoundation\Response;
class MyWelcomeController extends BaseWelcomeController
{
public function sendPasswordSavedResponse(): Response
{
return redirect()->route('home');
}
}
By default the WelcomeNotification
will send a mail. If you wish to customize the mail you can extend WelcomeNotification
and override the buildWelcomeNotificationMessage
method.
use Illuminate\Notifications\Messages\MailMessage;
class MyCustomWelcomeNotification extends WelcomeNotification
{
public function buildWelcomeNotificationMessage(): MailMessage
{
return (new MailMessage)
->subject('Welcome to my app')
->action(Lang::get('Set initial password'), $this->showWelcomeFormUrl)
}
}
To use the custom notification you must add a method called sendWelcomeNotification
to your User
model.
public function sendWelcomeNotification(\Carbon\Carbon $validUntil)
{
$this->notify(new MyCustomWelcomeNotification($validUntil));
}
The default welcome form that ships with this package only asks for a password. You can add more fields to the form by publishing the view and adding more fields to it.
To validate new fields you can override the rules
function in your own WelcomeController
. Here's an example where we want to validate an extra field named job_title
.
class MyWelcomeController extends BaseWelcomeController
{
public function rules()
{
return [
'password' => 'required|confirmed|min:6',
'job_title' => 'required',
];
}
}
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker.
You're free to use this package, but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using.
Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium.
We publish all received postcards on our company website.
Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website.
Does your business depend on our contributions? Reach out and support us on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff.
The MIT License (MIT). Please see License File for more information.