Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
7.14% covered (danger)
7.14%
1 / 14
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
AuthServiceProvider
7.14% covered (danger)
7.14%
1 / 14
0.00% covered (danger)
0.00%
0 / 1
25.02
0.00% covered (danger)
0.00%
0 / 1
 boot
7.14% covered (danger)
7.14%
1 / 14
0.00% covered (danger)
0.00%
0 / 1
25.02
1<?php
2
3namespace App\Providers;
4
5use App\Lib\Helper;
6use App\Models\Service;
7use Illuminate\Database\Eloquent\ModelNotFoundException;
8use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
9use Illuminate\Http\Request;
10use Illuminate\Support\Facades\Auth;
11
12class AuthServiceProvider extends ServiceProvider
13{
14    /**
15     * Register any authentication / authorization services.
16     *
17     * @return void
18     */
19    public function boot()
20    {
21
22        Auth::viaRequest('api-hmac', function (Request $request) {
23
24            /**
25             * Un token devrais être fourni pour chaque requete
26             */
27            if (is_null($request->bearer_token)) {
28                return null;
29            }
30
31            // * Si la route actuelle n'as pas de nom alors on refuse de la traiter.
32            if (!(Helper::getRoute($request))) {
33                // @codeCoverageIgnoreStart
34                return null;
35                // @codeCoverageIgnoreEnd
36            }
37
38            $service = null;
39
40            try {
41                // * On récupère le service actuel correspondant au token fourni.
42                $service = Service::getFromBearerToken($request->bearer_token ?? '');
43            } catch (ModelNotFoundException $e) {
44                return null;
45            }
46
47            // * Preload the brand as we will access it often later.
48            $service = $service->load('brand');
49
50            /**
51             ** All ApiV2 routes must pass Brand model to controller action since a Brand owns
52             ** a service token, otherwise the api cannot be called.
53             ** This hack is a custom binder instead of passing
54             ** this to route as a parameter
55             */
56            app()->bind(Service::class, function () use ($service) {
57                return $service;
58            });
59
60            // * On authenticate la request en vérifiant sa signature.
61            if ($service->authenticateApi($request)) {
62                return $service;
63            }
64
65            return null;
66        });
67    }
68}