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