ProAuthenticated.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Models\AppSession;
  4. use Closure;
  5. class ProAuthenticated
  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. $sessionKey = $request->cookie('sessionKey');
  17. $appSession = AppSession::where('session_key', $sessionKey)->where('is_active', true)->first();
  18. $authenticated = $sessionKey && $appSession;
  19. $currentRouteName = $request->route()->getName();
  20. if (!$authenticated) {
  21. return redirect()->route('login');
  22. }
  23. // - is_two_step_sms_auth_completed
  24. if (!$appSession->is_two_step_sms_auth_completed) {
  25. if ($currentRouteName != 'confirm_sms_auth_token') {
  26. return redirect()->route('confirm_sms_auth_token');
  27. }
  28. return $next($request);
  29. }
  30. // - is_password_temporary
  31. if (!!$appSession->pro->is_password_temporary) {
  32. if ($currentRouteName != 'set_password') {
  33. return redirect()->route('set_password');
  34. }
  35. return $next($request);
  36. }
  37. // - are_security_questions_set
  38. if (!$appSession->pro->are_security_questions_set) {
  39. if ($currentRouteName != 'set_security_questions') {
  40. return redirect()->route('set_security_questions');
  41. }
  42. return $next($request);
  43. }
  44. return $next($request);
  45. }
  46. }