DangerZone.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App, Auth, Closure;
  4. use Carbon\Carbon;
  5. class DangerZone
  6. {
  7. /**
  8. * Handle an incoming request.
  9. *
  10. * @param \Illuminate\Http\Request $request
  11. * @param \Closure $next
  12. * @return mixed
  13. */
  14. public function handle($request, Closure $next)
  15. {
  16. if( $request->session()->get('sudoModeAttempts') > 3) {
  17. $request->session()->pull('redirectNext');
  18. $request->session()->pull('sudoModeAttempts');
  19. Auth::logout();
  20. return redirect(route('login'));
  21. }
  22. if(!Auth::check()) {
  23. return redirect(route('login'));
  24. }
  25. if(!$request->is('i/auth/sudo') && $request->session()->get('sudoTrustDevice') != 1) {
  26. if( !$request->session()->has('sudoMode') ) {
  27. $request->session()->put('redirectNext', $request->url());
  28. return redirect('/i/auth/sudo');
  29. }
  30. if( $request->session()->get('sudoMode') < Carbon::now()->subMinutes(30)->timestamp ) {
  31. $request->session()->put('redirectNext', $request->url());
  32. return redirect('/i/auth/sudo');
  33. }
  34. }
  35. return $next($request);
  36. }
  37. }