Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
SetProvider
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
1 / 1
5
100.00% covered (success)
100.00%
1 / 1
 handle
100.00% covered (success)
100.00%
19 / 19
100.00% covered (success)
100.00%
1 / 1
5
1<?php
2
3namespace App\Http\Middleware;
4
5use App\Http\Models\Admin\AdminUserInvitation;
6use App\Http\Models\Auth\AdminUser;
7use App\Http\Models\Auth\User;
8use Closure;
9use Illuminate\Http\Request;
10use Illuminate\Support\Facades\Config;
11use Symfony\Component\HttpFoundation\Response;
12
13class SetProvider
14{
15    public function handle(Request $request, Closure $next, $provider = 'user'): Response
16    {
17        if ($provider == 'login') {
18            $model = User::class;
19            $passwordResetTable = 'user_password_resets';
20
21            $user = User::where('email', $request->email)->first();
22            if (! $user) {
23                $invite = AdminUserInvitation::where('email', $request->email)->first();
24                if ($invite) {
25                    $passwordResetTable = 'user_password_resets';
26                    $provider = 'invitation';
27                    $model = AdminUserInvitation::class;
28                }
29            }
30        } elseif ($provider == 'admin') {
31            $model = AdminUser::class;
32            $passwordResetTable = 'admin_password_resets';
33        } else {
34            $model = User::class;
35            $passwordResetTable = 'user_password_resets';
36        }
37
38        Config::set('auth.providers.users.model', $model);
39        Config::set('auth.passwords.users.table', $passwordResetTable);
40        Config::set('auth.passwords.users.type', $provider);
41
42        return $next($request);
43    }
44}