Skip to content

Commit

Permalink
#1688 Update responder selection to use a dedicated modal instead of …
Browse files Browse the repository at this point in the history
…a dropdown menu
  • Loading branch information
nadouani committed Feb 19, 2021
1 parent 30047bd commit be5c03e
Show file tree
Hide file tree
Showing 21 changed files with 239 additions and 258 deletions.
1 change: 1 addition & 0 deletions ui/app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@
<script src="scripts/controllers/LiveCtrl.js"></script>
<script src="scripts/controllers/MainPageCtrl.js"></script>
<script src="scripts/controllers/MigrationCtrl.js"></script>
<script src="scripts/controllers/misc/ResponderSelectorCtrl.js"></script>
<script src="scripts/controllers/misc/ServerInstanceDialogCtrl.js"></script>
<script src="scripts/controllers/RootCtrl.js"></script>
<script src="scripts/controllers/SearchCtrl.js"></script>
Expand Down
25 changes: 13 additions & 12 deletions ui/app/scripts/controllers/alert/AlertListCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -241,29 +241,30 @@
}
};

this.getResponders = function(eventId, force) {
this.getResponders = function(event, force) {
if(!force && this.responders !== null) {
return;
}

this.responders = null;
CortexSrv.getResponders('alert', eventId)
CortexSrv.getResponders('alert', event.id)
.then(function(responders) {
self.responders = responders;
return CortexSrv.promntForResponder(responders);
})
.catch(function(err) {
NotificationSrv.error('AlertList', err.data, err.status);
});
};

this.runResponder = function(responderId, responderName, event) {
CortexSrv.runResponder(responderId, responderName, 'alert', _.pick(event, 'id', 'tlp'))
.then(function(response) {
if(response && _.isString(response)) {
NotificationSrv.log(response, 'warning');
} else {
return CortexSrv.runResponder(response.id, response.name, 'alert', _.pick(event, 'id', 'tlp'));
}
})
.then(function(response){
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on alert', event.title].join(' '), 'success');
})
.catch(function(response) {
if(response && !_.isString(response)) {
NotificationSrv.error('CaseList', response.data, response.status);
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('AlertList', err.data, err.status);
}
});
};
Expand Down
29 changes: 21 additions & 8 deletions ui/app/scripts/controllers/case/CaseListCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -235,19 +235,32 @@
this.uiSrv.setSort(sort);
};

this.getCaseResponders = function(caseId, force) {
this.getCaseResponders = function(caze, force) {
if(!force && this.caseResponders !== null) {
return;
}

this.caseResponders = null;
CortexSrv.getResponders('case', caseId)
.then(function(responders) {
self.caseResponders = responders;
})
.catch(function(err) {
NotificationSrv.error('CaseList', err.data, err.status);
});
CortexSrv.getResponders('case', caze.id)
.then(function(responders) {
self.caseResponders = responders;
return CortexSrv.promntForResponder(responders);
})
.then(function(response) {
if(response && _.isString(response)) {
NotificationSrv.log(response, 'warning');
} else {
return CortexSrv.runResponder(response.id, response.name, 'case', _.pick(caze, 'id', 'tlp', 'pap'));
}
})
.then(function(response){
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on case', caze.title].join(' '), 'success');
})
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('CaseList', err.data, err.status);
}
});
};

this.runResponder = function(responderId, responderName, caze) {
Expand Down
37 changes: 19 additions & 18 deletions ui/app/scripts/controllers/case/CaseMainCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -332,24 +332,25 @@

$scope.caseResponders = null;
CortexSrv.getResponders('case', $scope.caseId)
.then(function(responders) {
$scope.caseResponders = responders;
})
.catch(function(response) {
NotificationSrv.error('caseDetails', response.data, response.status);
});
};

$scope.runResponder = function(responderId, responderName) {
CortexSrv.runResponder(responderId, responderName, 'case', _.pick($scope.caze, 'id', 'tlp', 'pap'))
.then(function(response) {
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on case', $scope.caze.title].join(' '), 'success');
})
.catch(function(response) {
if(response && !_.isString(response)) {
NotificationSrv.error('caseDetails', response.data, response.status);
}
});
.then(function(responders){
$scope.caseResponders = responders;
return CortexSrv.promntForResponder(responders);
})
.then(function(response) {
if(response && _.isString(response)) {
NotificationSrv.log(response, 'warning');
} else {
return CortexSrv.runResponder(response.id, response.name, 'case', _.pick($scope.caze, 'id', 'tlp', 'pap'));
}
})
.then(function(response){
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on case', $scope.caze.title].join(' '), 'success');
})
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('caseDetails', err.data, err.status);
}
});
};

/**
Expand Down
31 changes: 16 additions & 15 deletions ui/app/scripts/controllers/case/CaseObservablesCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -674,43 +674,44 @@
size: 'max',
resolve: {
report: function() {
return report
return report;
},
observable: function() {
return observable;
}
}
});
})
.catch(function(err) {
.catch(function(/*err*/) {
NotificationSrv.error('Unable to fetch the analysis report');
});
};

$scope.getObsResponders = function(observableId, force) {
$scope.getObsResponders = function(observable, force) {
if(!force && $scope.obsResponders !== null) {
return;
}

$scope.obsResponders = null;
CortexSrv.getResponders('case_artifact', observableId)
CortexSrv.getResponders('case_artifact', observable.id)
.then(function(responders) {
$scope.obsResponders = responders;
return CortexSrv.promntForResponder(responders);
})
.catch(function(err) {
NotificationSrv.error('observablesList', err.data, err.status);
});
};

$scope.runResponder = function(responderId, responderName, artifact) {
CortexSrv.runResponder(responderId, responderName, 'case_artifact', _.pick(artifact, 'id'))
.then(function(response) {
var data = '['+$filter('fang')(artifact.data || artifact.attachment.name)+']';
if(response && _.isString(response)) {
NotificationSrv.log(response, 'warning');
} else {
return CortexSrv.runResponder(response.id, response.name, 'case_artifact', _.pick(observable, 'id'));
}
})
.then(function(response){
var data = '['+$filter('fang')(observable.data || observable.attachment.name)+']';
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on observable', data].join(' '), 'success');
})
.catch(function(response) {
if(response && !_.isString(response)) {
NotificationSrv.error('observablesList', response.data, response.status);
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('observablesList', err.data, err.status);
}
});
};
Expand Down
29 changes: 15 additions & 14 deletions ui/app/scripts/controllers/case/CaseObservablesItemCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -240,33 +240,34 @@
});
};

$scope.getObsResponders = function(observableId, force) {
$scope.getObsResponders = function(observable, force) {
if(!force && $scope.obsResponders !== null) {
return;
}

$scope.obsResponders = null;
CortexSrv.getResponders('case_artifact', observableId)
CortexSrv.getResponders('case_artifact', observable.id)
.then(function(responders) {
$scope.obsResponders = responders;
return CortexSrv.promntForResponder(responders);
})
.catch(function(err) {
NotificationSrv.error('observablesList', err.data, err.status);
});
};

$scope.runResponder = function(responderId, responderName, artifact) {
CortexSrv.runResponder(responderId, responderName, 'case_artifact', _.pick(artifact, 'id'))
.then(function(response) {
var data = '['+$filter('fang')(artifact.data || artifact.attachment.name)+']';
if(response && _.isString(response)) {
NotificationSrv.log(response, 'warning');
} else {
return CortexSrv.runResponder(response.id, response.name, 'case_artifact', _.pick(observable, 'id'));
}
})
.then(function(response){
var data = '['+$filter('fang')(observable.data || observable.attachment.name)+']';
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on observable', data].join(' '), 'success');
})
.catch(function(response) {
if(response && !_.isString(response)) {
NotificationSrv.error('observablesList', response.data, response.status);
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('Observable Details', err.data, err.status);
}
});
};
};

$scope.getTags = function(query) {
return TagSrv.fromObservables(query);
Expand Down
43 changes: 22 additions & 21 deletions ui/app/scripts/controllers/case/CaseTasksCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -174,32 +174,33 @@
return defer.promise;
};

$scope.getTaskResponders = function(taskId, force) {
$scope.getTaskResponders = function(task, force) {
if(!force && $scope.taskResponders !== null) {
return;
}

$scope.taskResponders = null;
CortexSrv.getResponders('case_task', taskId)
.then(function(responders) {
$scope.taskResponders = responders;
})
.catch(function(err) {
NotificationSrv.error('taskList', response.data, response.status);
})
};

$scope.runResponder = function(responderId, responderName, task) {
CortexSrv.runResponder(responderId, responderName, 'case_task', _.pick(task, 'id'))
.then(function(response) {
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on task', task.title].join(' '), 'success');
})
.catch(function(response) {
if(response && !_.isString(response)) {
NotificationSrv.error('taskList', response.data, response.status);
}
});
};
CortexSrv.getResponders('case_task', task.id)
.then(function(responders) {
$scope.taskResponders = responders;
return CortexSrv.promntForResponder(responders);
})
.then(function(response) {
if (response && _.isString(response)) {
NotificationSrv.log(response, 'warning');
} else {
return CortexSrv.runResponder(response.id, response.name, 'case_task', _.pick(task, 'id'));
}
})
.then(function(response) {
NotificationSrv.success(['Responder', response.data.responderName, 'started successfully on task', task.title].join(' '));
})
.catch(function(err) {
if (err && !_.isString(err)) {
NotificationSrv.error('taskList', err.data, err.status);
}
});
};
}

function CaseTaskDeleteCtrl($uibModalInstance, title) {
Expand Down
23 changes: 12 additions & 11 deletions ui/app/scripts/controllers/case/CaseTasksItemCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -216,20 +216,21 @@
CortexSrv.getResponders('case_task', $scope.task.id)
.then(function(responders) {
$scope.taskResponders = responders;
return CortexSrv.promntForResponder(responders);
})
.catch(function(err) {
NotificationSrv.error('taskDetails', response.data, response.status);
})
};

$scope.runResponder = function(responderId, responderName) {
CortexSrv.runResponder(responderId, responderName, 'case_task', _.pick($scope.task, 'id'))
.then(function(response) {
if(response && _.isString(response)) {
NotificationSrv.log(response, 'warning');
} else {
return CortexSrv.runResponder(response.id, response.name, 'case_task', _.pick($scope.task, 'id'));
}
})
.then(function(response){
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on task', $scope.task.title].join(' '), 'success');
})
.catch(function(response) {
if(response && !_.isString(response)) {
NotificationSrv.error('taskDetails', response.data, response.status);
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('taskDetails', err.data, err.status);
}
});
};
Expand All @@ -242,7 +243,7 @@
}, function(response) {
NotificationSrv.error('taskDetails', response.data, response.status);
});
}
};

// Add tabs
CaseTabsSrv.addTab($scope.tabName, {
Expand Down
20 changes: 20 additions & 0 deletions ui/app/scripts/controllers/misc/ResponderSelectorCtrl.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
(function() {
'use strict';

angular.module('theHiveControllers')
.controller('ResponderSelectorCtrl', function($uibModalInstance, responders) {
this.responders = responders || [];
this.selectAll = false;
this.state = {
filter: ''
};

this.next = function(responder) {
$uibModalInstance.close(responder);
};

this.cancel = function() {
$uibModalInstance.dismiss();
};
});
})();
Loading

0 comments on commit be5c03e

Please sign in to comment.