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
CheckUserAccountStatus
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\CompanyLicenses;
6use Closure;
7use Illuminate\Http\Request;
8use Symfony\Component\HttpFoundation\Response;
9
10class CheckUserAccountStatus
11{
12    /**
13     * Handle an incoming request.
14     *
15     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
16     */
17    public function handle(Request $request, Closure $next): Response
18    {
19        $excludedRoutes = [
20            'user-app-setting',
21        ];
22
23        if (in_array($request->route()->getName(), $excludedRoutes)) {
24            return $next($request);
25        }
26
27        $user = auth()->user();
28
29        if ($user && $user->status === 'Deactivated') {
30            return response()->json([
31                'code' => 'DEACTIVATED',
32                'error' => 'Account is deactivated',
33                'message' => 'Account is deactivated',
34                'admin_email' => $user?->company?->pocs()?->first()?->email,
35            ], Response::HTTP_FORBIDDEN);
36        }
37
38        if (filled($user?->company_id)) {
39            $companyLicense = CompanyLicenses::where('company_id', $user->company_id)->active()->first();
40
41            if (! $companyLicense) {
42                return response()->json([
43                    'code' => 'DEACTIVATED',
44                    'error' => "The company doesn't have any active license.",
45                    'message' => "The company doesn't have any active license. Please contact the administrator.",
46                ], Response::HTTP_FORBIDDEN);
47            }
48        }
49
50        return $next($request);
51    }
52}