You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ni...@apache.org on 2021/10/05 11:15:51 UTC

[ranger] branch master updated: RANGER-3457 : [Session Timeout-Ranger]With multiple tabs if one tab encounters session idle timeout other active tab still continues with old/invalid session cookie.

This is an automated email from the ASF dual-hosted git repository.

ni3galave pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new d7a3de1  RANGER-3457 : [Session Timeout-Ranger]With multiple tabs if one tab encounters session idle timeout other active tab still continues with old/invalid session cookie.
d7a3de1 is described below

commit d7a3de193d45f00ef20ef8859d025b444b2dba0b
Author: Nitin Galave <ni...@apache.org>
AuthorDate: Thu Sep 30 14:28:19 2021 +0530

    RANGER-3457 : [Session Timeout-Ranger]With multiple tabs if one tab encounters session idle timeout other active tab still continues with old/invalid session cookie.
---
 .../main/webapp/scripts/controllers/Controller.js  |  6 ++-
 .../main/webapp/scripts/controllers/NController.js |  6 ++-
 .../webapp/scripts/modules/globalize/message/en.js |  2 +-
 .../src/main/webapp/scripts/utils/XAUtils.js       | 45 +++++++++++++---------
 4 files changed, 36 insertions(+), 23 deletions(-)

diff --git a/security-admin/src/main/webapp/scripts/controllers/Controller.js b/security-admin/src/main/webapp/scripts/controllers/Controller.js
index aab73b6..74f2af5 100755
--- a/security-admin/src/main/webapp/scripts/controllers/Controller.js
+++ b/security-admin/src/main/webapp/scripts/controllers/Controller.js
@@ -34,10 +34,12 @@ define(function(require) {
             console.log("initialize a Controller Controller");
             if (App.userProfile && App.userProfile.get('configProperties') && App.userProfile.get('configProperties').inactivityTimeout
                 && App.userProfile.get('configProperties').inactivityTimeout > 0) {
-                XAUtil.setIdealActivityTime()
+                XAUtil.setIdleActivityTime()
                 $('#contentBody').on("click mousemove keyup mousedown scroll keypress", function(e){
                     // do preload here
-                    XAUtil.setIdealActivityTime()
+                    if ($('.stayLoggdedIn-popup').length == 0) {
+                        XAUtil.setIdleActivityTime()
+                    }
                 })
             }
             var vTopNav = require('views/common/TopNav');
diff --git a/security-admin/src/main/webapp/scripts/controllers/NController.js b/security-admin/src/main/webapp/scripts/controllers/NController.js
index 2598035..6f97a31 100644
--- a/security-admin/src/main/webapp/scripts/controllers/NController.js
+++ b/security-admin/src/main/webapp/scripts/controllers/NController.js
@@ -33,10 +33,12 @@ define(function(require) {
             console.log("initialize a Controller Controller");
             if (App.userProfile && App.userProfile.get('configProperties') && App.userProfile.get('configProperties').inactivityTimeout
                 && App.userProfile.get('configProperties').inactivityTimeout > 0) {
-                XAUtil.setIdealActivityTime()
+                XAUtil.setIdleActivityTime()
                 $('#contentBody').on("click mousemove keyup mousedown scroll keypress", function(e){
                     // do preload here
-                    XAUtil.setIdealActivityTime()
+                    if ($('.stayLoggdedIn-popup').length == 0) {
+                        XAUtil.setIdleActivityTime()
+                    }
                 })
             }
             var vTopNav = require('views/common/TopNav');
diff --git a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
index 46e4c19..1d87d16 100644
--- a/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
+++ b/security-admin/src/main/webapp/scripts/modules/globalize/message/en.js
@@ -515,7 +515,7 @@ define(function(require) {
 				preventNavGroupForm : 'Group form edit is in progress. Please save/cancel changes before navigating away!',
 				preventNavUserList : 'Some Users/Groups have been edited. Kindly save your changes before navigating away!',
 				preventNavZoneForm : 'Zone form edit is in progress. Please save/cancel changes before navigating away!',
-				idelTimeOutMsg : 'Because you have been inactive, your session is about to expire.'
+				idleTimeOutMsg : 'Because you have been inactive, your session is about to expire.'
 				
 			},	
 			validationMessages : {
diff --git a/security-admin/src/main/webapp/scripts/utils/XAUtils.js b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
index 49f03d1..bddf53d 100644
--- a/security-admin/src/main/webapp/scripts/utils/XAUtils.js
+++ b/security-admin/src/main/webapp/scripts/utils/XAUtils.js
@@ -1910,57 +1910,66 @@ define(function(require) {
         }
     }
 
-    XAUtils.setIdealActivityTime = function() {
+    XAUtils.setIdleActivityTime = function() {
         var App = require('App');
         var INACTIVITY_TIME_OUT = 900;
         if (App.userProfile && App.userProfile.get('configProperties') && App.userProfile.get('configProperties').inactivityTimeout) {
             INACTIVITY_TIME_OUT = parseInt(App.userProfile.get('configProperties').inactivityTimeout);
         }
         INACTIVITY_TIME_OUT *= 1000;
-        localStorage.setItem('idealTimeOut', moment().add(INACTIVITY_TIME_OUT, 'milliseconds').valueOf());
+        localStorage.setItem('idleTimeOut', moment().add(INACTIVITY_TIME_OUT, 'milliseconds').valueOf());
         localStorage.setItem('idleTimerLoggedOut', false);
-        XAUtils.setIdealActivityTime = function () {
-            localStorage.setItem('idealTimeOut', moment().add(INACTIVITY_TIME_OUT, 'milliseconds').valueOf());
+        XAUtils.setIdleActivityTime = function () {
+            localStorage.setItem('idleTimeOut', moment().add(INACTIVITY_TIME_OUT, 'milliseconds').valueOf());
             var isLoggedOut = localStorage.getItem('idleTimerLoggedOut') == "true";
             if (isLoggedOut) {
                 localStorage.setItem('idleTimerLoggedOut', false);
             }
             XAUtils.startIdealActivityInterval()
         }
+        XAUtils.setIdleActivityTime();
     };
 
     XAUtils.startIdealActivityInterval = function () {
         clearInterval(XAUtils.activityIntervalID)
         XAUtils.activityIntervalID = setInterval(function() {
-            var idealTimeVal = parseInt(localStorage.getItem('idealTimeOut'));
-            if(moment().isAfter(moment(idealTimeVal))) {
+            var idleTimeVal = parseInt(localStorage.getItem('idleTimeOut'));
+            if(moment().isAfter(moment(idleTimeVal))) {
                 clearInterval(XAUtils.activityIntervalID)
                 var isLoggedOut = localStorage.getItem('idleTimerLoggedOut') == "true";
                 if(isLoggedOut) {
                     localStorage.setItem('idleTimerLoggedOut', 'false');
-                    XAUtils.idealActivityLogout();
+                    XAUtils.idleActivityLogout();
                 } else {
-                    XAUtils.idelTimePopup();
+                    XAUtils.idleTimePopup();
                 }
             }
         }, 2000);
     };
 
-    XAUtils.idelTimePopup = function() {
+    XAUtils.idleTimePopup = function() {
         var timeLeft = 15;
         var $elem = '<div id="Timer"></div>';
 
         function countdown() {
-            if (timeLeft == 0) {
+            var idleTimeVal = parseInt(localStorage.getItem('idleTimeOut'));
+            if (timeLeft == 0 ) {
                 clearTimeout(timerId);
-                localStorage.setItem('idleTimerLoggedOut', 'false');
-                XAUtils.idealActivityLogout();
+                if (!moment().isAfter(moment(idleTimeVal))) {
+                    bootbox.hideAll()
+                } else {
+                    localStorage.setItem('idleTimerLoggedOut', 'false');
+                    XAUtils.idleActivityLogout();
+                }
             } else {
                 var isLoggedOut = localStorage.getItem('idleTimerLoggedOut') == "true";
                 if(isLoggedOut) {
                     clearTimeout(timerId);
                     localStorage.setItem('idleTimerLoggedOut', 'false');
-                    XAUtils.idealActivityLogout();
+                    XAUtils.idleActivityLogout();
+                } else if (!moment().isAfter(moment(idleTimeVal))) {
+                    bootbox.hideAll()
+                    clearTimeout(timerId);
                 } else {
                     $.find('#Timer')[0].innerHTML ='Time left : '+ timeLeft + ' seconds remaining';
                     timeLeft--;
@@ -1969,15 +1978,15 @@ define(function(require) {
         }
         bootbox.dialog({
             title: 'Session Expiration Warning',
-            message: '<span class="inline-block">' + localization.tt('dialogMsg.idelTimeOutMsg') +'<br>'+ $elem + '</span>',
+            message: '<span class="inline-block">' + localization.tt('dialogMsg.idleTimeOutMsg') +'<br>'+ $elem + '</span>',
             closeButton: false,
             buttons: {
                 noclose: {
                     "label" : localization.tt('btn.stayLoggdedIn'),
-                    "className" : "btn-success btn-sm",
+                    "className" : "btn-success btn-sm stayLoggdedIn-popup",
                     "callback" : function() {
                         clearTimeout(timerId);
-                        XAUtils.setIdealActivityTime()
+                        XAUtils.setIdleActivityTime()
                     }
                 },
                 cancel: {
@@ -1985,7 +1994,7 @@ define(function(require) {
                     "className" : "btn-danger btn-sm",
                     "callback" : function() {
                         localStorage.setItem('idleTimerLoggedOut', 'false');
-                        XAUtils.idealActivityLogout();
+                        XAUtils.idleActivityLogout();
                     }
                 }
             }
@@ -1996,7 +2005,7 @@ define(function(require) {
         return false;
     };
 
-    XAUtils.idealActivityLogout = function () {
+    XAUtils.idleActivityLogout = function () {
         var App = require('App');
         // localStorage.setItem('idleTimerLoggedOut', true);
         if(localStorage.getItem('idleTimerLoggedOut') == "false") {