mirror of
https://github.com/ansible/awx.git
synced 2026-03-24 20:35:02 -02:30
Merge pull request #2440 from jaredevantabor/session
Adding an extra session check for when a user closes Tower
This commit is contained in:
@@ -870,11 +870,17 @@ var tower = angular.module('Tower', [
|
|||||||
|
|
||||||
if (!Authorization.getToken() || !Authorization.isUserLoggedIn()) {
|
if (!Authorization.getToken() || !Authorization.isUserLoggedIn()) {
|
||||||
// User not authenticated, redirect to login page
|
// User not authenticated, redirect to login page
|
||||||
$rootScope.sessionExpired = false;
|
|
||||||
$cookieStore.put('sessionExpired', false);
|
|
||||||
$rootScope.configReady = true;
|
|
||||||
$location.path('/login');
|
$location.path('/login');
|
||||||
} else {
|
} else {
|
||||||
|
var lastUser = $cookieStore.get('current_user'),
|
||||||
|
timestammp = Store('sessionTime');
|
||||||
|
if(lastUser && lastUser.id && timestammp && timestammp[lastUser.id]){
|
||||||
|
var stime = timestammp[lastUser.id].time,
|
||||||
|
now = new Date().getTime();
|
||||||
|
if ((stime - now) <= 0) {
|
||||||
|
$location.path('/login');
|
||||||
|
}
|
||||||
|
}
|
||||||
// If browser refresh, set the user_is_superuser value
|
// If browser refresh, set the user_is_superuser value
|
||||||
$rootScope.user_is_superuser = Authorization.getUserInfo('is_superuser');
|
$rootScope.user_is_superuser = Authorization.getUserInfo('is_superuser');
|
||||||
// state the user refreshes we want to open the socket, except if the user is on the login page, which should happen after the user logs in (see the AuthService module for that call to OpenSocket)
|
// state the user refreshes we want to open the socket, except if the user is on the login page, which should happen after the user logs in (see the AuthService module for that call to OpenSocket)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<div id="bread_crumb" class="BreadCrumb" ng-class="{'is-loggedOut' : !$root.current_user.username}">
|
<div id="bread_crumb" class="BreadCrumb" ng-class="{'is-loggedOut' : !current_user || !current_user.username}">
|
||||||
<div ng-hide="licenseMissing" ncy-breadcrumb></div>
|
<div ng-hide="licenseMissing" ncy-breadcrumb></div>
|
||||||
<div class="BreadCrumb-menuLink"
|
<div class="BreadCrumb-menuLink"
|
||||||
id="bread_crumb_activity_stream"
|
id="bread_crumb_activity_stream"
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
<footer class='Footer'>
|
<footer class='Footer'>
|
||||||
<div class="Footer-copyright" ng-class="{'is-loggedOut' : !$root.current_user.username}">Copyright © 2016 <a class="Footer-link" href="http://www.redhat.com" target="_blank">Red Hat</a>, Inc.</div>
|
<div class="Footer-copyright" ng-class="{'is-loggedOut' : !current_user || !current_user.username}">Copyright © 2016 <a class="Footer-link" href="http://www.redhat.com" target="_blank">Red Hat</a>, Inc.</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@@ -66,8 +66,10 @@ export default
|
|||||||
var x,
|
var x,
|
||||||
ConfigService = $injector.get('ConfigService'),
|
ConfigService = $injector.get('ConfigService'),
|
||||||
scope = angular.element(document.getElementById('main-view')).scope();
|
scope = angular.element(document.getElementById('main-view')).scope();
|
||||||
scope.$destroy();
|
|
||||||
//$rootScope.$destroy();
|
if(scope){
|
||||||
|
scope.$destroy();
|
||||||
|
}
|
||||||
|
|
||||||
if($cookieStore.get('lastPath')==='/portal'){
|
if($cookieStore.get('lastPath')==='/portal'){
|
||||||
$cookieStore.put( 'lastPath', '/portal');
|
$cookieStore.put( 'lastPath', '/portal');
|
||||||
@@ -101,7 +103,7 @@ export default
|
|||||||
$rootScope.current_user = {};
|
$rootScope.current_user = {};
|
||||||
$rootScope.license_tested = undefined;
|
$rootScope.license_tested = undefined;
|
||||||
$rootScope.userLoggedIn = false;
|
$rootScope.userLoggedIn = false;
|
||||||
// $rootScope.sessionExpired = false;
|
$rootScope.sessionExpired = false;
|
||||||
$rootScope.licenseMissing = true;
|
$rootScope.licenseMissing = true;
|
||||||
$rootScope.token = null;
|
$rootScope.token = null;
|
||||||
$rootScope.token_expires = null;
|
$rootScope.token_expires = null;
|
||||||
|
|||||||
@@ -10,12 +10,16 @@ export default {
|
|||||||
name: 'signIn',
|
name: 'signIn',
|
||||||
route: '/login',
|
route: '/login',
|
||||||
templateUrl: templateUrl('login/loginBackDrop'),
|
templateUrl: templateUrl('login/loginBackDrop'),
|
||||||
controller: ['$rootScope', 'Authorization', function($rootScope, Authorization) {
|
resolve: {
|
||||||
if (Authorization.isUserLoggedIn()) {
|
obj: ['$rootScope', 'Authorization',
|
||||||
Authorization.logout();
|
function($rootScope, Authorization) {
|
||||||
}
|
$rootScope.configReady = true;
|
||||||
$(".LoginModal-dialog").remove();
|
if (Authorization.isUserLoggedIn()) {
|
||||||
}],
|
Authorization.logout();
|
||||||
|
}
|
||||||
|
$(".LoginModal-dialog").remove();
|
||||||
|
}]
|
||||||
|
},
|
||||||
ncyBreadcrumb: {
|
ncyBreadcrumb: {
|
||||||
skip: true
|
skip: true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,10 +61,8 @@ export default ['$log', '$cookieStore', '$compile', '$window', '$rootScope',
|
|||||||
function ($log, $cookieStore, $compile, $window, $rootScope, $location,
|
function ($log, $cookieStore, $compile, $window, $rootScope, $location,
|
||||||
Authorization, ToggleClass, Alert, Wait, Timer, Empty, ClearScope,
|
Authorization, ToggleClass, Alert, Wait, Timer, Empty, ClearScope,
|
||||||
scope, pendoService, ConfigService, CheckLicense, FeaturesService) {
|
scope, pendoService, ConfigService, CheckLicense, FeaturesService) {
|
||||||
|
|
||||||
var lastPath, lastUser, sessionExpired, loginAgain;
|
var lastPath, lastUser, sessionExpired, loginAgain;
|
||||||
|
|
||||||
$rootScope.configReady = true;
|
|
||||||
loginAgain = function() {
|
loginAgain = function() {
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
$location.path('/logout');
|
$location.path('/logout');
|
||||||
@@ -75,6 +73,7 @@ export default ['$log', '$cookieStore', '$compile', '$window', '$rootScope',
|
|||||||
scope.login_username = '';
|
scope.login_username = '';
|
||||||
scope.login_password = '';
|
scope.login_password = '';
|
||||||
|
|
||||||
|
|
||||||
lastPath = function () {
|
lastPath = function () {
|
||||||
return (Empty($rootScope.lastPath)) ? $cookieStore.get('lastPath') : $rootScope.lastPath;
|
return (Empty($rootScope.lastPath)) ? $cookieStore.get('lastPath') : $rootScope.lastPath;
|
||||||
};
|
};
|
||||||
@@ -104,12 +103,6 @@ export default ['$log', '$cookieStore', '$compile', '$window', '$rootScope',
|
|||||||
scope.customLoginInfoPresent = (scope.customLoginInfo) ? true : false;
|
scope.customLoginInfoPresent = (scope.customLoginInfo) ? true : false;
|
||||||
});
|
});
|
||||||
|
|
||||||
// Reset the login form
|
|
||||||
//scope.loginForm.login_username.$setPristine();
|
|
||||||
//scope.loginForm.login_password.$setPristine();
|
|
||||||
//$rootScope.userLoggedIn = false; //hide the logout link. if you got here, you're logged out.
|
|
||||||
//$cookieStore.put('userLoggedIn', false); //gets set back to true by Authorization.setToken().
|
|
||||||
|
|
||||||
if (scope.removeAuthorizationGetLicense) {
|
if (scope.removeAuthorizationGetLicense) {
|
||||||
scope.removeAuthorizationGetLicense();
|
scope.removeAuthorizationGetLicense();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<div id="login-modal" class="LoginModal">
|
<div id="login-modal" class="LoginModal">
|
||||||
<div class="LoginModal-backDrop"
|
<div class="LoginModal-backDrop"
|
||||||
ng-class="{'is-loggedOut' : !$root || !$root.current_user.username}"></div>
|
ng-class="{'is-loggedOut' : !current_user || !current_user.username}"></div>
|
||||||
<div class="LoginModal-dialog">
|
<div class="LoginModal-dialog">
|
||||||
<div class="LoginModal-content"
|
<div class="LoginModal-content"
|
||||||
ng-class="{'is-loggedOut' : !$root || !$root.current_user.username}">
|
ng-class="{'is-loggedOut' : !current_user || !current_user.username}">
|
||||||
<div class="LoginModal-header">
|
<div class="LoginModal-header">
|
||||||
<img id="login_modal_image" class="LoginModal-logoImage"
|
<img id="login_modal_image" class="LoginModal-logoImage"
|
||||||
ng-class="{'LoginModal-logoImage--notCustom': !customLogoPresent}"
|
ng-class="{'LoginModal-logoImage--notCustom': !customLogoPresent}"
|
||||||
|
|||||||
@@ -3,14 +3,14 @@
|
|||||||
<a id="main_menu_logo"
|
<a id="main_menu_logo"
|
||||||
href="/#/"
|
href="/#/"
|
||||||
class="MainMenu-logo ng-cloak"
|
class="MainMenu-logo ng-cloak"
|
||||||
ng-class="{'is-loggedOut' : !$root.current_user.username, 'MainMenu-logoImage--licenseMissing': licenseMissing}">
|
ng-class="{'is-loggedOut' : !current_user || !current_user.username, 'MainMenu-logoImage--licenseMissing': licenseMissing}">
|
||||||
<img class="MainMenu-logoImage"
|
<img class="MainMenu-logoImage"
|
||||||
ng-class="{'MainMenu-logoImage--licenseMissing': licenseMissing}"
|
ng-class="{'MainMenu-logoImage--licenseMissing': licenseMissing}"
|
||||||
ng-src="/static/assets/tower-logo-header.svg">
|
ng-src="/static/assets/tower-logo-header.svg">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<!-- Mobile menu items -->
|
<!-- Mobile menu items -->
|
||||||
<span id="main_menu_mobile_items" class="MainMenu-mobileItems" ng-class="{'is-hiddenOnMobile': isHiddenOnMobile, 'is-loggedOut' : !$root.current_user.username}">
|
<span id="main_menu_mobile_items" class="MainMenu-mobileItems" ng-class="{'is-hiddenOnMobile': isHiddenOnMobile, 'is-loggedOut' : !current_user || !current_user.username}">
|
||||||
<a class="MainMenu-item"
|
<a class="MainMenu-item"
|
||||||
id="main_menu_projects_mobile_link"
|
id="main_menu_projects_mobile_link"
|
||||||
href="/#/projects"
|
href="/#/projects"
|
||||||
@@ -90,7 +90,7 @@
|
|||||||
id="main_menu_projects_link"
|
id="main_menu_projects_link"
|
||||||
href="/#/projects"
|
href="/#/projects"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('projects'), 'is-loggedOut' : !$root.current_user.username}">
|
ng-class="{'is-currentRoute' : isCurrentState('projects'), 'is-loggedOut' : !current_user || !current_user.username}">
|
||||||
<span class="MainMenu-itemText">
|
<span class="MainMenu-itemText">
|
||||||
PROJECTS
|
PROJECTS
|
||||||
</span>
|
</span>
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
id="main_menu_inventories_link"
|
id="main_menu_inventories_link"
|
||||||
href="/#/inventories"
|
href="/#/inventories"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('inventories'), 'is-loggedOut' : !$root.current_user.username}">
|
ng-class="{'is-currentRoute' : isCurrentState('inventories'), 'is-loggedOut' : !current_user || !current_user.username}">
|
||||||
<span class="MainMenu-itemText">
|
<span class="MainMenu-itemText">
|
||||||
INVENTORIES
|
INVENTORIES
|
||||||
</span>
|
</span>
|
||||||
@@ -108,7 +108,7 @@
|
|||||||
id="main_menu_job_templates_link"
|
id="main_menu_job_templates_link"
|
||||||
href="/#/job_templates"
|
href="/#/job_templates"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('jobTemplates'), 'is-loggedOut' : !$root.current_user.username}">
|
ng-class="{'is-currentRoute' : isCurrentState('jobTemplates'), 'is-loggedOut' : !current_user || !current_user.username}">
|
||||||
<span class="MainMenu-itemText">
|
<span class="MainMenu-itemText">
|
||||||
JOB TEMPLATES
|
JOB TEMPLATES
|
||||||
</span>
|
</span>
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
id="main_menu_jobs_link"
|
id="main_menu_jobs_link"
|
||||||
href="/#/jobs"
|
href="/#/jobs"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('jobs'), 'is-loggedOut' : !$root.current_user.username}">
|
ng-class="{'is-currentRoute' : isCurrentState('jobs'), 'is-loggedOut' : !current_user || !current_user.username}">
|
||||||
<span class="MainMenu-itemText">
|
<span class="MainMenu-itemText">
|
||||||
JOBS
|
JOBS
|
||||||
</span>
|
</span>
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
id="main_menu_current_user_link"
|
id="main_menu_current_user_link"
|
||||||
ng-href="/#/users/{{ $root.current_user.id }}"
|
ng-href="/#/users/{{ $root.current_user.id }}"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('users.edit'), 'is-loggedOut' : !$root.current_user.username}"
|
ng-class="{'is-currentRoute' : isCurrentState('users.edit'), 'is-loggedOut' : !current_user || !current_user.username}"
|
||||||
aw-tool-tip="{{currentUserTip}}"
|
aw-tool-tip="{{currentUserTip}}"
|
||||||
aw-tip-watch="currentUserTip"
|
aw-tip-watch="currentUserTip"
|
||||||
data-placement="bottom"
|
data-placement="bottom"
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
id="main_menu_setup_link"
|
id="main_menu_setup_link"
|
||||||
ng-href="/#/setup"
|
ng-href="/#/setup"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('setup'), 'is-loggedOut' : !$root.current_user.username}"
|
ng-class="{'is-currentRoute' : isCurrentState('setup'), 'is-loggedOut' : !current_user || !current_user.username}"
|
||||||
aw-tool-tip="Settings"
|
aw-tool-tip="Settings"
|
||||||
data-placement="bottom"
|
data-placement="bottom"
|
||||||
data-trigger="hover"
|
data-trigger="hover"
|
||||||
@@ -156,7 +156,7 @@
|
|||||||
id="main_menu_portal_link"
|
id="main_menu_portal_link"
|
||||||
ng-href="/#/portal"
|
ng-href="/#/portal"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('portalMode'), 'is-loggedOut' : !$root.current_user.username}"
|
ng-class="{'is-currentRoute' : isCurrentState('portalMode'), 'is-loggedOut' : !current_user || !current_user.username}"
|
||||||
aw-tool-tip="My View"
|
aw-tool-tip="My View"
|
||||||
data-placement="bottom"
|
data-placement="bottom"
|
||||||
data-trigger="hover"
|
data-trigger="hover"
|
||||||
@@ -169,7 +169,7 @@
|
|||||||
id="main_menu_docs_link"
|
id="main_menu_docs_link"
|
||||||
ng-href="http://docs.ansible.com/ansible-tower/"
|
ng-href="http://docs.ansible.com/ansible-tower/"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-loggedOut' : !$root.current_user.username}"
|
ng-class="{'is-loggedOut' : !current_user || !current_user.username}"
|
||||||
aw-tool-tip="View Documentation"
|
aw-tool-tip="View Documentation"
|
||||||
data-placement="bottom"
|
data-placement="bottom"
|
||||||
data-trigger="hover"
|
data-trigger="hover"
|
||||||
@@ -183,7 +183,7 @@
|
|||||||
id="main_menu_logout_link"
|
id="main_menu_logout_link"
|
||||||
ng-href="/#/logout"
|
ng-href="/#/logout"
|
||||||
ng-class="{'is-currentRoute' : isCurrentState('logout'),
|
ng-class="{'is-currentRoute' : isCurrentState('logout'),
|
||||||
'is-loggedOut' : !$root.current_user.username,
|
'is-loggedOut' : !current_user || !current_user.username,
|
||||||
'MainMenu-item--licenseMissing' : licenseMissing}"
|
'MainMenu-item--licenseMissing' : licenseMissing}"
|
||||||
aw-tool-tip="Log Out"
|
aw-tool-tip="Log Out"
|
||||||
data-placement="bottom"
|
data-placement="bottom"
|
||||||
@@ -205,7 +205,7 @@
|
|||||||
data-placement="bottom"
|
data-placement="bottom"
|
||||||
data-trigger="hover"
|
data-trigger="hover"
|
||||||
data-container="body"
|
data-container="body"
|
||||||
ng-class="{'is-loggedOut' : !$root.current_user.username}"
|
ng-class="{'is-loggedOut' : !current_user || !current_user.username}"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-if="socketStatus && socketStatus !== 'ok'">
|
ng-if="socketStatus && socketStatus !== 'ok'">
|
||||||
<i class="fa MainMenu-socketImage"
|
<i class="fa MainMenu-socketImage"
|
||||||
@@ -218,7 +218,7 @@
|
|||||||
id="main_menu_mobile_toggle_button"
|
id="main_menu_mobile_toggle_button"
|
||||||
class="MainMenu-toggle"
|
class="MainMenu-toggle"
|
||||||
ng-hide="licenseMissing"
|
ng-hide="licenseMissing"
|
||||||
ng-class="{'is-active': !isHiddenOnMobile, 'is-loggedOut' : !$root.current_user.username}"
|
ng-class="{'is-active': !isHiddenOnMobile, 'is-loggedOut' : !current_user || !current_user.username}"
|
||||||
ng-click="toggleMenu()">
|
ng-click="toggleMenu()">
|
||||||
<i class="fa fa-bars MainMenu-toggleImage"></i>
|
<i class="fa fa-bars MainMenu-toggleImage"></i>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
Reference in New Issue
Block a user