Реализация времени ожидания сеанса bootstrap модально с таймером в ruby на рельсах - PullRequest
0 голосов
/ 17 марта 2020

Я реализую предупреждение о тайм-ауте сеанса для пользователя. Я использовал устройство для автоматического тайм-аута сеанса, но это для предоставления привилегий пользователю. Ниже приведен код, который я уже сделал. извиняюсь, если есть грубые ошибки.

Здесь мой таймер сеанса составляет 2,00 минуты. когда я проверяю значения минут и секунд, я получаю правильные значения. Но когда я добавляю его в модал, таймер не работает и показывает только 0: 1 представление:

<input id="user_activity" name="user_activity" type="hidden" value="active" />
<input id="user_loged_in" name="user_loged_in" type="hidden" value="true" />
<div id="inactivity_warning" class="modal fade" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
    <div class="modal-content">
<div class="modal-header">
<button type="button" class="close inactivity_ok" data-dismiss="modal" aria- 
 hidden="true">&times;</button>
</div>
<div class="modal-body">
  <div id="custom_alert_message">
    <p>You will be logged out in due to inactivity.</p>

 </div>
<div class="modal-footer">
<a href="javascript:void(0)" class="btn inactivity_ok" data-dismiss="modal" aria- 
hidden="true">O.K</a>
 </div>
 </div>
 </div>
 </div>
 </div>

script:

  window.onload = reset_main_timer;
  document.onmousemove = reset_main_timer;
  document.onkeypress = reset_main_timer;
  var main_timer = 0;
  var sub_timer = 0;
  var user_loged_in = $("#user_loged_in").val()
  function dialog_set_interval(){
      main_timer = setInterval(function(){

            if(user_loged_in == "true"){
            let now = new Date();
            for (i = 120; i > 0; i--) {

              var deadline = new Date(now);
                deadline.setSeconds(deadline.getSeconds() + i);
                var distance = deadline.getTime() - now.getTime();
                var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
                var seconds = Math.floor((distance % (1000 * 60)) / 1000);
                  $("#inactivity_warning").modal("show");
                document.getElementById("custom_alert_message").innerHTML = minutes + ":" + seconds;

                }
              sub_timer = setInterval(function(){
          ("#user_activity").val("inactive");
        },2000);
                  }

      },5000);

      }



    function reset_main_timer(){
      clearInterval(main_timer);
      dialog_set_interval();
  }

  $(".inactivity_ok").click(function(){
      clearInterval(sub_timer);
      if($("#user_activity").val() == "inactive"){
          window.location = window.location // if your application not manage session expire
                                            //automatically. clear cookies and session her
      }
  });

Любая помощь будет оценена. Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...