AccountInterstitial.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Http\Middleware;
  3. use Closure;
  4. use Auth;
  5. use App\User;
  6. class AccountInterstitial
  7. {
  8. /**
  9. * Handle an incoming request.
  10. *
  11. * @param \Illuminate\Http\Request $request
  12. * @param \Closure $next
  13. * @return mixed
  14. */
  15. public function handle($request, Closure $next)
  16. {
  17. $ar = [
  18. 'login',
  19. 'logout',
  20. 'password*',
  21. 'loginAs*',
  22. 'i/warning*',
  23. 'i/auth/checkpoint',
  24. 'i/auth/sudo',
  25. 'site/privacy',
  26. 'site/terms',
  27. 'site/kb/community-guidelines',
  28. ];
  29. if(Auth::check() && !$request->is($ar)) {
  30. if($request->user()->has_interstitial) {
  31. if($request->wantsJson()) {
  32. $res = ['_refresh'=>true,'error' => 403, 'message' => \App\AccountInterstitial::JSON_MESSAGE];
  33. return response()->json($res, 403);
  34. } else {
  35. return redirect('/i/warning');
  36. }
  37. } else {
  38. return $next($request);
  39. }
  40. } else {
  41. return $next($request);
  42. }
  43. }
  44. }