mirror of
https://github.com/ansible/awx.git
synced 2026-02-23 22:16:00 -03:30
adding disconnect function for logging out
and adding ability to specify `socket: null` for a route definition, in order to specify a state that should not subscribe/unsubscribe at all (for login state).
This commit is contained in:
@@ -65,6 +65,7 @@ export default
|
|||||||
|
|
||||||
var x,
|
var x,
|
||||||
ConfigService = $injector.get('ConfigService'),
|
ConfigService = $injector.get('ConfigService'),
|
||||||
|
SocketService = $injector.get('SocketService'),
|
||||||
scope = angular.element(document.getElementById('main-view')).scope();
|
scope = angular.element(document.getElementById('main-view')).scope();
|
||||||
|
|
||||||
if(scope){
|
if(scope){
|
||||||
@@ -94,6 +95,7 @@ export default
|
|||||||
$rootScope.lastUser = $cookieStore.get('current_user').id;
|
$rootScope.lastUser = $cookieStore.get('current_user').id;
|
||||||
}
|
}
|
||||||
ConfigService.delete();
|
ConfigService.delete();
|
||||||
|
SocketService.disconnect();
|
||||||
$cookieStore.remove('token_expires');
|
$cookieStore.remove('token_expires');
|
||||||
$cookieStore.remove('current_user');
|
$cookieStore.remove('current_user');
|
||||||
$cookieStore.remove('token');
|
$cookieStore.remove('token');
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {templateUrl} from '../shared/template-url/template-url.factory';
|
|||||||
export default {
|
export default {
|
||||||
name: 'signIn',
|
name: 'signIn',
|
||||||
route: '/login',
|
route: '/login',
|
||||||
|
socket: null,
|
||||||
templateUrl: templateUrl('login/loginBackDrop'),
|
templateUrl: templateUrl('login/loginBackDrop'),
|
||||||
resolve: {
|
resolve: {
|
||||||
obj: ['$rootScope', 'Authorization',
|
obj: ['$rootScope', 'Authorization',
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ export default
|
|||||||
$log.debug('Socket connecting to: ' + url);
|
$log.debug('Socket connecting to: ' + url);
|
||||||
|
|
||||||
self.socket = new ReconnectingWebSocket(url, null, {
|
self.socket = new ReconnectingWebSocket(url, null, {
|
||||||
// debug: true,
|
|
||||||
timeoutInterval: 3000,
|
timeoutInterval: 3000,
|
||||||
maxReconnectAttempts: 10
|
maxReconnectAttempts: 10
|
||||||
});
|
});
|
||||||
@@ -31,6 +30,10 @@ export default
|
|||||||
$log.debug('Error Logged: ' + error); //log errors
|
$log.debug('Error Logged: ' + error); //log errors
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self.socket.onclose = function (error) {
|
||||||
|
$log.debug('Websocket Disconnected.');
|
||||||
|
};
|
||||||
|
|
||||||
self.socket.onmessage = function (e) {
|
self.socket.onmessage = function (e) {
|
||||||
$log.debug('Received From Server: ' + e.data);
|
$log.debug('Received From Server: ' + e.data);
|
||||||
var data = JSON.parse(e.data), str = "";
|
var data = JSON.parse(e.data), str = "";
|
||||||
@@ -59,56 +62,6 @@ export default
|
|||||||
str = `${$state.current.name}-${data.group_name}`;
|
str = `${$state.current.name}-${data.group_name}`;
|
||||||
}
|
}
|
||||||
$rootScope.$emit(str, data);
|
$rootScope.$emit(str, data);
|
||||||
// if(data.group_name==="jobs"){
|
|
||||||
//
|
|
||||||
// if (!('status' in data)){
|
|
||||||
// // we know that this must have been a
|
|
||||||
// // summary complete message
|
|
||||||
// $log.debug('Job summary_complete ' + data.unified_job_id);
|
|
||||||
// $rootScope.$emit('JobSummaryComplete', data);
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if ($state.is('jobs')) {
|
|
||||||
// $rootScope.$emit('JobStatusChange-jobs', data);
|
|
||||||
// }
|
|
||||||
// else if ($state.includes('jobDetail') ||
|
|
||||||
// $state.is('adHocJobStdout') ||
|
|
||||||
// $state.is('inventorySyncStdout') ||
|
|
||||||
// $state.is('managementJobStdout') ||
|
|
||||||
// $state.is('scmUpdateStdout')) {
|
|
||||||
//
|
|
||||||
// $log.debug("sending status to standard out");
|
|
||||||
// $rootScope.$emit('JobStatusChange-jobStdout', data);
|
|
||||||
// }
|
|
||||||
// if ($state.includes('jobDetail')) {
|
|
||||||
// $rootScope.$emit('JobStatusChange-jobDetails', data);
|
|
||||||
// } else if ($state.is('dashboard')) {
|
|
||||||
// $rootScope.$emit('JobStatusChange-home', data);
|
|
||||||
// } else if ($state.is('portalMode')) {
|
|
||||||
// $rootScope.$emit('JobStatusChange-portal', data);
|
|
||||||
// } else if ($state.is('projects')) {
|
|
||||||
// $rootScope.$emit('JobStatusChange-projects', data);
|
|
||||||
// } else if ($state.is('inventoryManage') ||
|
|
||||||
// $state.includes('inventoryManage')) {
|
|
||||||
// $rootScope.$emit('JobStatusChange-inventory', data);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if(data.group_name==="job_events"){
|
|
||||||
// $rootScope.$emit('job_events-'+data.job, data);
|
|
||||||
// }
|
|
||||||
// if(data.group_name==="schedules"){
|
|
||||||
// $log.debug('Schedule ' + data.unified_job_id + ' status changed to ' + data.status);
|
|
||||||
// $rootScope.$emit('ScheduleStatusChange', data);
|
|
||||||
// }
|
|
||||||
// if(data.group_name==="ad_hoc_command_events"){
|
|
||||||
// $rootScope.$emit('ad_hoc_command_events-'+data.ad_hoc_command, data);
|
|
||||||
// }
|
|
||||||
// if(data.group_name==="control"){
|
|
||||||
// $log.debug(data.reason);
|
|
||||||
// $rootScope.sessionTimer.expireSession('session_limit');
|
|
||||||
// $state.go('signOut');
|
|
||||||
// }
|
|
||||||
|
|
||||||
return self.socket;
|
return self.socket;
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -125,6 +78,9 @@ export default
|
|||||||
$log.debug('socket status: ' + $rootScope.socketStatus);
|
$log.debug('socket status: ' + $rootScope.socketStatus);
|
||||||
}, 2000);
|
}, 2000);
|
||||||
},
|
},
|
||||||
|
disconnect: function(){
|
||||||
|
this.socket.close();
|
||||||
|
},
|
||||||
subscribe: function(state){
|
subscribe: function(state){
|
||||||
console.log("Next state: " + state.name);
|
console.log("Next state: " + state.name);
|
||||||
this.emit(JSON.stringify(state.socket));
|
this.emit(JSON.stringify(state.socket));
|
||||||
@@ -156,7 +112,6 @@ export default
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
checkStatus: function() {
|
checkStatus: function() {
|
||||||
|
|
||||||
function getSocketTip(status) {
|
function getSocketTip(status) {
|
||||||
var result = '';
|
var result = '';
|
||||||
switch(status) {
|
switch(status) {
|
||||||
|
|||||||
@@ -2,35 +2,35 @@ export default function($stateProvider) {
|
|||||||
this.$get = function() {
|
this.$get = function() {
|
||||||
return {
|
return {
|
||||||
addSocket: function(state){
|
addSocket: function(state){
|
||||||
if(!state.resolve){
|
if(state.socket!==null){
|
||||||
state.resolve = {};
|
if(!state.resolve){
|
||||||
|
state.resolve = {};
|
||||||
|
}
|
||||||
|
state.resolve.socket = ['SocketService', '$rootScope', '$stateParams',
|
||||||
|
function(SocketService, $rootScope, $stateParams) {
|
||||||
|
$rootScope.socketPromise.promise.then(function(){
|
||||||
|
if(!state.socket){
|
||||||
|
state.socket = {groups: {}};
|
||||||
|
SocketService.unsubscribe(state);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(state.socket.groups.hasOwnProperty( "job_events")){
|
||||||
|
state.socket.groups.job_events = [$stateParams.id];
|
||||||
|
}
|
||||||
|
if(state.socket.groups.hasOwnProperty( "ad_hoc_command_events")){
|
||||||
|
state.socket.groups.ad_hoc_command_events = [$stateParams.id];
|
||||||
|
}
|
||||||
|
SocketService.subscribe(state);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
state.resolve.socket = ['SocketService', '$rootScope', '$stateParams',
|
|
||||||
function(SocketService, $rootScope, $stateParams) {
|
|
||||||
$rootScope.socketPromise.promise.then(function(){
|
|
||||||
if(!state.socket){
|
|
||||||
state.socket = {groups: {}};
|
|
||||||
SocketService.unsubscribe(state);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
if(state.socket.groups.hasOwnProperty( "job_events")){
|
|
||||||
state.socket.groups.job_events = [$stateParams.id];
|
|
||||||
}
|
|
||||||
if(state.socket.groups.hasOwnProperty( "ad_hoc_command_events")){
|
|
||||||
state.socket.groups.ad_hoc_command_events = [$stateParams.id];
|
|
||||||
}
|
|
||||||
SocketService.subscribe(state);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
}];
|
|
||||||
},
|
},
|
||||||
|
|
||||||
addState: function(state) {
|
addState: function(state) {
|
||||||
var route = state.route || state.url;
|
var route = state.route || state.url;
|
||||||
|
|
||||||
this.addSocket(state);
|
this.addSocket(state);
|
||||||
|
|
||||||
$stateProvider.state(state.name, {
|
$stateProvider.state(state.name, {
|
||||||
url: route,
|
url: route,
|
||||||
controller: state.controller,
|
controller: state.controller,
|
||||||
|
|||||||
Reference in New Issue
Block a user