AppServiceProvider.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace App\Providers;
  3. use App\Avatar;
  4. use App\Follower;
  5. use App\HashtagFollow;
  6. use App\Like;
  7. use App\ModLog;
  8. use App\Notification;
  9. use App\Observers\AvatarObserver;
  10. use App\Observers\FollowerObserver;
  11. use App\Observers\HashtagFollowObserver;
  12. use App\Observers\LikeObserver;
  13. use App\Observers\ModLogObserver;
  14. use App\Observers\NotificationObserver;
  15. use App\Observers\ProfileObserver;
  16. use App\Observers\StatusHashtagObserver;
  17. use App\Observers\StatusObserver;
  18. use App\Observers\UserFilterObserver;
  19. use App\Observers\UserObserver;
  20. use App\Profile;
  21. use App\Services\AccountService;
  22. use App\Services\UserOidcService;
  23. use App\Status;
  24. use App\StatusHashtag;
  25. use App\User;
  26. use App\UserFilter;
  27. use Auth;
  28. use Horizon;
  29. use Illuminate\Database\Eloquent\Model;
  30. use Illuminate\Pagination\Paginator;
  31. use Illuminate\Support\Facades\Gate;
  32. use Illuminate\Cache\RateLimiting\Limit;
  33. use Illuminate\Support\Facades\RateLimiter;
  34. use Illuminate\Support\Facades\Schema;
  35. use Illuminate\Support\Facades\Validator;
  36. use Illuminate\Support\ServiceProvider;
  37. use Laravel\Pulse\Facades\Pulse;
  38. use Illuminate\Http\Request;
  39. use URL;
  40. class AppServiceProvider extends ServiceProvider
  41. {
  42. /**
  43. * Bootstrap any application services.
  44. *
  45. * @return void
  46. */
  47. public function boot()
  48. {
  49. if (config('instance.force_https_urls', true)) {
  50. URL::forceScheme('https');
  51. }
  52. Schema::defaultStringLength(191);
  53. Paginator::useBootstrap();
  54. Avatar::observe(AvatarObserver::class);
  55. Follower::observe(FollowerObserver::class);
  56. HashtagFollow::observe(HashtagFollowObserver::class);
  57. Like::observe(LikeObserver::class);
  58. Notification::observe(NotificationObserver::class);
  59. ModLog::observe(ModLogObserver::class);
  60. Profile::observe(ProfileObserver::class);
  61. StatusHashtag::observe(StatusHashtagObserver::class);
  62. User::observe(UserObserver::class);
  63. Status::observe(StatusObserver::class);
  64. UserFilter::observe(UserFilterObserver::class);
  65. Horizon::auth(function ($request) {
  66. return Auth::check() && $request->user()->is_admin;
  67. });
  68. Validator::includeUnvalidatedArrayKeys();
  69. Gate::define('viewPulse', function (User $user) {
  70. return $user->is_admin === 1;
  71. });
  72. if (config('pulse.enabled', false)) {
  73. Pulse::user(function ($user) {
  74. $acct = AccountService::get($user->profile_id, true);
  75. return $acct ? [
  76. 'name' => $acct['username'],
  77. 'extra' => $user->email,
  78. 'avatar' => $acct['avatar'],
  79. ] : [
  80. 'name' => $user->username,
  81. 'extra' => 'DELETED',
  82. 'avatar' => '/storage/avatars/default.jpg',
  83. ];
  84. });
  85. }
  86. RateLimiter::for('app-signup', function (Request $request) {
  87. return Limit::perDay(100)->by($request->ip());
  88. });
  89. RateLimiter::for('app-code-verify', function (Request $request) {
  90. return Limit::perHour(20)->by($request->ip());
  91. });
  92. RateLimiter::for('app-code-resend', function (Request $request) {
  93. return Limit::perHour(10)->by($request->ip());
  94. });
  95. // Model::preventLazyLoading(true);
  96. }
  97. /**
  98. * Register any application services.
  99. *
  100. * @return void
  101. */
  102. public function register()
  103. {
  104. $this->app->bind(UserOidcService::class, function() {
  105. return UserOidcService::build();
  106. });
  107. }
  108. }