CoreServiceProvider.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. // Copyright 2019 Hackware SpA <human@hackware.cl>
  3. // "Hackware Web Services Core" is released under the MIT License terms.
  4. namespace Hawese\Core\Providers;
  5. use Illuminate\Support\ServiceProvider;
  6. class CoreServiceProvider extends ServiceProvider
  7. {
  8. const BASEDIR = __DIR__ . '/../..';
  9. public function register()
  10. {
  11. // Service container bindings
  12. // The following define which implementation of a Contract to use
  13. $this->app->singleton(
  14. \Illuminate\Contracts\Debug\ExceptionHandler::class,
  15. \Hawese\Core\Exceptions\Handler::class
  16. );
  17. $this->app->singleton(
  18. \Illuminate\Contracts\Console\Kernel::class,
  19. \Laravel\Lumen\Console\Kernel::class
  20. // \Hawese\Core\Console\Kernel::class // Probably in future
  21. );
  22. // Service providers setup package resources such as database
  23. // migrations, environment configuration setup and routes (this
  24. // is a service provider, duh!).
  25. // Required service providers
  26. $service_providers = [
  27. \Hawese\Core\Providers\SessionServiceProvider::class,
  28. \Hawese\Core\Providers\AuthServiceProvider::class,
  29. \Hawese\Core\Providers\MailerServiceProvider::class,
  30. \Spatie\Cors\CorsServiceProvider::class,
  31. ];
  32. foreach ($service_providers as $service_provider) {
  33. $this->app->register($service_provider);
  34. }
  35. $optional_service_providers = [
  36. 'Hawese\Wallet\Providers\WalletServiceProvider',
  37. 'Hawese\Payment\Providers\PaymentServiceProvider',
  38. 'Laravel\Tinker\TinkerServiceProvider',
  39. ];
  40. foreach ($optional_service_providers as $service_provider) {
  41. if (class_exists($service_provider)) {
  42. $this->app->register($service_provider);
  43. }
  44. }
  45. }
  46. public function boot()
  47. {
  48. $this->loadRoutesFrom(self::BASEDIR . '/routes/core.php');
  49. $this->loadMigrationsFrom(self::BASEDIR . '/database/migrations');
  50. $this->loadViewsFrom(self::BASEDIR . '/resources/views', 'core');
  51. // Global middlewares
  52. $this->app->middleware([
  53. \Spatie\Cors\Cors::class,
  54. ]);
  55. // Register route middleware for avaibility
  56. $this->app->routeMiddleware([
  57. 'auth' => \Hawese\Core\Http\Middleware\Authenticate::class,
  58. 'throttle' => (
  59. \Illuminate\Routing\Middleware\ThrottleRequests::class
  60. ),
  61. ]);
  62. // Looks like url generation is inconsistent, I don't like that
  63. $this->app->url->forceRootUrl(config('app.url'));
  64. }
  65. }