GUAC-1126: Clear managed connections, if any, upon login. New sessions should start with a clean environment (fixes GUAC-1066).

This commit is contained in:
Michael Jumper
2015-04-07 11:36:55 -07:00
parent d0845e5ef0
commit 5f243c42df
3 changed files with 21 additions and 6 deletions

View File

@@ -127,14 +127,22 @@ angular.module('client').factory('guacClientManager', ['$injector',
}; };
// Disconnect all clients when window is unloaded /**
$window.addEventListener('unload', function disconnectAllClients() { * Disconnects and removes all currently-connected clients.
*/
service.clear = function clear() {
// Disconnect each managed client // Disconnect each managed client
for (var id in service.managedClients) for (var id in service.managedClients)
service.managedClients[id].client.disconnect(); service.managedClients[id].client.disconnect();
}); // Clear managed clients
service.managedClients = {};
};
// Disconnect all clients when window is unloaded
$window.addEventListener('unload', service.clear);
return service; return service;

View File

@@ -24,8 +24,9 @@ angular.module('login').controller('loginController', ['$scope', '$injector',
function loginController($scope, $injector) { function loginController($scope, $injector) {
// Required services // Required services
var $location = $injector.get("$location"); var $location = $injector.get('$location');
var authenticationService = $injector.get("authenticationService"); var authenticationService = $injector.get('authenticationService');
var guacClientManager = $injector.get('guacClientManager');
var userPageService = $injector.get('userPageService'); var userPageService = $injector.get('userPageService');
/** /**
@@ -53,10 +54,16 @@ angular.module('login').controller('loginController', ['$scope', '$injector',
// Redirect to main view upon success // Redirect to main view upon success
.success(function success(data, status, headers, config) { .success(function success(data, status, headers, config) {
// Provide user with clean environment
guacClientManager.clear();
// Redirect to main view
userPageService.getHomePage() userPageService.getHomePage()
.then(function homePageRetrieved(homePage) { .then(function homePageRetrieved(homePage) {
$location.url(homePage.url); $location.url(homePage.url);
}); });
}) })
// Reset and focus password upon failure // Reset and focus password upon failure

View File

@@ -23,4 +23,4 @@
/** /**
* The module for the login functionality. * The module for the login functionality.
*/ */
angular.module('login', ['element', 'navigation']); angular.module('login', ['client', 'element', 'navigation']);