[!NOTE] For Laravel 10 and below, use branch v1.x
FortifyUI is an unopinionated authentication starter, powered by Laravel Fortify. It is completely unstyled -- on purpose -- and only includes a minimal amount of markup to get your project running quickly. This package can be used to start your project, or you can use the FortifyUI Preset Template which allows you to create your own preset that you can install with FortifyUI.
FortifyUI automates the base installation and configuration of Laravel Fortify, it includes the features that Laravel Fortify recommends implementing yourself and it provides the scaffolding for you to build your own UI around it. Hence, Fortify + UI.
To get started, you'll need to install FortifyUI using Composer. This will install Laravel Fortify as well so, please make sure you do not have it installed, already.
composer require zacksmash/fortify-ui
Next, you'll need to run the install command:
php artisan fortify:ui
This command will publish FortifyUI's views, add the home
route to web.php
and add the FortifyUI service provider to your app/Providers
directory. This will also publish the service provider and config file for Laravel Fortify. Lastly, it will register both service providers in the app.php
config file, under the providers array.
That's it, you're all setup! For advanced setup and configuration options, keep reading!
The FortifyUI service provider registers the views for all of the authentication features. If you'd rather not include the FortifyUI service provider, you can skip generating it by using the --skip-provider
flag.
php artisan fortify:ui --skip-provider
Then, you can add this to your AppServiceProvider
or FortifyServiceProvider
, in the boot()
method.
Fortify::loginView(function () {
return view('auth.login');
});
Fortify::registerView(function () {
return view('auth.register');
});
Fortify::requestPasswordResetLinkView(function () {
return view('auth.forgot-password');
});
Fortify::resetPasswordView(function ($request) {
return view('auth.reset-password', ['request' => $request]);
});
// Fortify::verifyEmailView(function () {
// return view('auth.verify-email');
// });
// Fortify::confirmPasswordView(function () {
// return view('auth.confirm-password');
// });
// Fortify::twoFactorChallengeView(function () {
// return view('auth.two-factor-challenge');
// });
To register all views at once, you can use this instead:
Fortify::viewPrefix('auth.');
Now, you should have all of the registered views required by Laravel Fortify, including basic layout and home views, as well as optional password confirmation, email verification and two-factor authentication views.
By default, FortifyUI is setup to handle the basic authentication functions (Login, Register, Password Reset) provided by Laravel Fortify.
To enable the email verification feature, you'll need to visit the FortifyUI service provider and uncomment Fortify::verifyEmailView()
, to register the view. Then, go to the fortify.php
config file and make sure Features::emailVerification()
is uncommented. Next, you'll want to update your User
model to include the following:
use Illuminate\Contracts\Auth\MustVerifyEmail;
class User extends Authenticatable implements MustVerifyEmail
{
...
This allows you to attach the verified
middleware to any of your routes, which is handled by the verify.blade.php
file.
More info about this can be found here.
To enable the password confirmation feature, you'll need to visit the FortifyUI service provider and uncomment Fortify::confirmPasswordView()
, to register the view. This allows you to attach the password.confirm
middleware to any of your routes, which is handled by the password-confirm.blade.php
file.
To enable the two-factor authentication feature, you'll need to visit the FortifyUI service provider and uncomment Fortify::twoFactorChallengeView()
, to register the view. Then, go to the fortify.php
config file and make sure Features::twoFactorAuthentication
is uncommented. Next, you'll want to update your User
model to include the following:
use Laravel\Fortify\TwoFactorAuthenticatable;
class User extends Authenticatable
{
use HasFactory, Notifiable, TwoFactorAuthenticatable;
...
That's it! Now, you can log into your application and enable or disable two-factor authentication.
To enable the ability to update user passwords and/or profile information, go to the fortify.php
config file and make sure these features are uncommented:
Features::updateProfileInformation(),
Features::updatePasswords(),
FortifyUI encourges make your own presets, with your favorite frontend libraries and frameworks. To get started, visit the FortifyUI Preset Template repository, and click the "Use Template" button.
Presets for v1.x can be found in that branch.
FortifyUI is open-sourced software licensed under the MIT license.