AppServiceProvider.php 3.4 KB

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