Passed
Branch main (b90ec4)
by Thierry
20:23 queued 14:04
created

FortifyServiceProvider::boot()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 32
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 17
nc 1
nop 0
dl 0
loc 32
rs 9.7
c 0
b 0
f 0
1
<?php
2
3
namespace App\Providers;
4
5
use App\Actions\Fortify\CreateNewUser;
6
use App\Actions\Fortify\ResetUserPassword;
7
use App\Actions\UpdateUserPassword;
8
use App\Actions\UpdateUserProfile;
9
use Illuminate\Cache\RateLimiting\Limit;
10
use Illuminate\Http\Request;
11
use Illuminate\Support\Facades\RateLimiter;
12
use Illuminate\Support\ServiceProvider;
13
use Illuminate\Support\Str;
14
use Laravel\Fortify\Fortify;
15
16
class FortifyServiceProvider extends ServiceProvider
17
{
18
    /**
19
     * Register any application services.
20
     */
21
    public function register(): void
22
    {
23
        //
24
    }
25
26
    /**
27
     * Bootstrap any application services.
28
     */
29
    public function boot(): void
30
    {
31
        // Login view
32
        Fortify::loginView(function() {
33
            return view('tontine.app.auth.login');
34
        });
35
        Fortify::registerView(function() {
36
            return view('tontine.app.auth.register');
37
        });
38
        Fortify::requestPasswordResetLinkView(function() {
39
            return view('tontine.app.auth.forgot-password');
40
        });
41
        Fortify::resetPasswordView(function($request) {
42
            return view('tontine.app.auth.reset-password', ['request' => $request]);
43
        });
44
        /*Fortify::verifyEmailView(function () {
45
            return view('tontine.app.auth.verify-email');
46
        });*/
47
48
        Fortify::createUsersUsing(CreateNewUser::class);
49
        Fortify::updateUserProfileInformationUsing(UpdateUserProfile::class);
50
        Fortify::updateUserPasswordsUsing(UpdateUserPassword::class);
51
        Fortify::resetUserPasswordsUsing(ResetUserPassword::class);
52
53
        RateLimiter::for('login', function (Request $request) {
54
            $throttleKey = Str::transliterate(Str::lower($request->input(Fortify::username())).'|'.$request->ip());
55
56
            return Limit::perMinute(5)->by($throttleKey);
57
        });
58
59
        RateLimiter::for('two-factor', function (Request $request) {
60
            return Limit::perMinute(5)->by($request->session()->get('login.id'));
61
        });
62
    }
63
}
64