zacksmash / fortify-ui

Laravel Fortify driven replacement to the Laravel UI package
https://github.com/zacksmash/fortify-ui
MIT License
242 stars 20 forks source link
authentication fortify laravel

Introduction

[!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.

In a nutshell...

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.


Installation

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!

Configuration

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.

Features

By default, FortifyUI is setup to handle the basic authentication functions (Login, Register, Password Reset) provided by Laravel Fortify.

Email Verification

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.

Password Confirmation

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.

Two-Factor Authentication

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.

Update User Password/Profile

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 Presets

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.

Community Presets

Presets for v1.x can be found in that branch.

License

FortifyUI is open-sourced software licensed under the MIT license.