1 <?php
2
3 namespace Skimia\ApiFusion;
4
5 use Illuminate\Support\ServiceProvider;
6 use Dingo\Api\Provider\LaravelServiceProvider as DingoApiServiceProvider;
7 use KennedyTedesco\Validation\ValidationServiceProvider;
8 use Cartalyst\Sentinel\Laravel\SentinelServiceProvider;
9 use Illuminate\Foundation\AliasLoader;
10 use Dingo\Api\Facade\API;
11 use Dingo\Api\Facade\Route;
12 use Cartalyst\Sentinel\Laravel\Facades\Activation;
13 use Cartalyst\Sentinel\Laravel\Facades\Reminder;
14 use Cartalyst\Sentinel\Laravel\Facades\Sentinel;
15 use Skimia\ApiFusion\Annotations\ApiRouting\ApiRoutingAnnotationsServiceProvider;
16 use Skimia\ApiFusion\Routing\RouteFusion;
17 use Skimia\ApiFusion\Facade\RouteFusion as RouteFusionFacade;
18 use Dingo\Api\Auth\Provider\Basic;
19 use Skimia\ApiFusion\Auth\Sentinel as AuthSentinel;
20
21 class ApiFusionServiceProvider extends ServiceProvider
22 {
23 24 25
26 public function register()
27 {
28 $this->app->register(DingoApiServiceProvider::class);
29 $this->app->register(SentinelServiceProvider::class);
30 $this->app->register(ValidationServiceProvider::class);
31 $this->app->register(ApiRoutingAnnotationsServiceProvider::class);
32
33 $loader = AliasLoader::getInstance();
34
35 $loader->alias('API', API::class);
36 $loader->alias('APIRoute', Route::class);
37
38 $loader->alias('Activation', Activation::class);
39 $loader->alias('Reminder', Reminder::class);
40 $loader->alias('Sentinel', Sentinel::class);
41
42 $this->app->singleton('api-fusion.route', function ($app) {
43 return new RouteFusion($app);
44 });
45
46 $loader->alias('RouteFusion', RouteFusionFacade::class);
47
48 if (class_exists('Tymon\JWTAuth\Providers\LaravelServiceProvider')) {
49 $this->app->register('Tymon\JWTAuth\Providers\LaravelServiceProvider');
50
51 $loader->alias('JWTAuth', 'Tymon\JWTAuth\Facades\JWTAuth');
52 }
53
54 $this->commands([
55 'Skimia\ApiFusion\Console\Commands\GenerateDomainApi',
56 ]);
57 }
58
59 public function boot()
60 {
61 $this->app['api.auth']->extend('basic', function ($app) {
62 return new Basic($app['auth']);
63 });
64
65 $this->app['api.auth']->extend('sentinel', function ($app) {
66 return new AuthSentinel($app['sentinel']);
67 });
68
69 if (class_exists('Tymon\JWTAuth\Providers\LaravelServiceProvider')) {
70 $this->app['api.auth']->extend('jwt', function ($app) {
71 return new \Dingo\Api\Auth\Provider\JWT($app['Tymon\JWTAuth\JWTAuth']);
72 });
73 }
74 }
75 }
76