diff --git a/guacamole/src/main/webapp/app/client/services/guacClientManager.js b/guacamole/src/main/webapp/app/client/services/guacClientManager.js index c3d0e0f56..67d20b98d 100644 --- a/guacamole/src/main/webapp/app/client/services/guacClientManager.js +++ b/guacamole/src/main/webapp/app/client/services/guacClientManager.js @@ -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 for (var id in service.managedClients) service.managedClients[id].client.disconnect(); - }); + // Clear managed clients + service.managedClients = {}; + + }; + + // Disconnect all clients when window is unloaded + $window.addEventListener('unload', service.clear); return service; diff --git a/guacamole/src/main/webapp/app/login/controllers/loginController.js b/guacamole/src/main/webapp/app/login/controllers/loginController.js index 565abc6c7..34765b449 100644 --- a/guacamole/src/main/webapp/app/login/controllers/loginController.js +++ b/guacamole/src/main/webapp/app/login/controllers/loginController.js @@ -24,8 +24,9 @@ angular.module('login').controller('loginController', ['$scope', '$injector', function loginController($scope, $injector) { // Required services - var $location = $injector.get("$location"); - var authenticationService = $injector.get("authenticationService"); + var $location = $injector.get('$location'); + var authenticationService = $injector.get('authenticationService'); + var guacClientManager = $injector.get('guacClientManager'); var userPageService = $injector.get('userPageService'); /** @@ -53,10 +54,16 @@ angular.module('login').controller('loginController', ['$scope', '$injector', // Redirect to main view upon success .success(function success(data, status, headers, config) { + + // Provide user with clean environment + guacClientManager.clear(); + + // Redirect to main view userPageService.getHomePage() .then(function homePageRetrieved(homePage) { $location.url(homePage.url); }); + }) // Reset and focus password upon failure diff --git a/guacamole/src/main/webapp/app/login/loginModule.js b/guacamole/src/main/webapp/app/login/loginModule.js index 54e531233..289aefa9d 100644 --- a/guacamole/src/main/webapp/app/login/loginModule.js +++ b/guacamole/src/main/webapp/app/login/loginModule.js @@ -23,4 +23,4 @@ /** * The module for the login functionality. */ -angular.module('login', ['element', 'navigation']); +angular.module('login', ['client', 'element', 'navigation']);