Skip to content

Commit

Permalink
#1431 Use responder selector from case, alert, task, observable detai…
Browse files Browse the repository at this point in the history
…l pages
  • Loading branch information
nadouani committed Jul 13, 2020
1 parent 94473d0 commit 8a44670
Show file tree
Hide file tree
Showing 10 changed files with 113 additions and 91 deletions.
8 changes: 7 additions & 1 deletion frontend/app/scripts/controllers/alert/AlertListCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@
};

self.import = function(event) {
$uibModal.open({
var modalInstance = $uibModal.open({
templateUrl: 'views/partials/alert/event.dialog.html',
controller: 'AlertEventCtrl',
controllerAs: 'dialog',
Expand All @@ -175,6 +175,12 @@
readonly: false
}
});

modalInstance.result.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('AlertListCtrl', err.data, err.status);
}
});
};

self.resetSelection = function() {
Expand Down
37 changes: 19 additions & 18 deletions frontend/app/scripts/controllers/case/CaseMainCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -323,24 +323,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
27 changes: 14 additions & 13 deletions frontend/app/scripts/controllers/case/CaseObservablesItemCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -269,30 +269,31 @@
});
};

$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);
}
});
};
Expand Down
23 changes: 12 additions & 11 deletions frontend/app/scripts/controllers/case/CaseTasksItemCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,23 +230,24 @@
CortexSrv.getResponders('case_task', $scope.task.id)
.then(function(responders) {
$scope.taskResponders = responders;
return CortexSrv.promntForResponder(responders);
})
.catch(function(err) {
NotificationSrv.error('taskDetails', err.data, err.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);
}
});
};
};

$scope.reloadTask = function() {
CaseTaskSrv.get({
Expand Down
47 changes: 32 additions & 15 deletions frontend/app/scripts/directives/logEntry.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,45 @@
$scope.showActions = false;
$scope.actions = null;
$scope.logResponders = null;
$scope.getLogResponders = function(logId) {
$scope.getLogResponders = function(taskLog, force) {
if(!force && $scope.logResponders !== null) {
return;
}

$scope.logResponders = null;
CortexSrv.getResponders('case_task_log', logId)
CortexSrv.getResponders('case_task_log', taskLog._id)
.then(function(responders) {
$scope.logResponders = 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_log', _.pick(taskLog, '_id'));
}
})
.catch(function(response) {
NotificationSrv.error('logEntry', response.data, response.status);
.then(function(response){
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on task log'].join(' '), 'success');
})
.catch(function(err) {
if(err && !_.isString(err)) {
NotificationSrv.error('logEntry', err.data, err.status);
}
});
};

$scope.runResponder = function(responderId, responderName, log) {
CortexSrv.runResponder(responderId, responderName, 'case_task_log', _.pick(log, '_id'))
.then(function(response) {
NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on task log'].join(' '), 'success');
})
.catch(function(response) {
if(response && !_.isString(response)) {
NotificationSrv.error('logEntry', response.data, response.status);
}
});
};
// $scope.runResponder = function(responderId, responderName, log) {
// CortexSrv.runResponder(responderId, responderName, 'case_task_log', _.pick(log, '_id'))
// .then(function(response) {
// NotificationSrv.log(['Responder', response.data.responderName, 'started successfully on task log'].join(' '), 'success');
// })
// .catch(function(response) {
// if(response && !_.isString(response)) {
// NotificationSrv.error('logEntry', response.data, response.status);
// }
// });
// };

$scope.getActions = function(logId) {
$scope.actions = PSearchSrv(null, 'connector/cortex/action', {
Expand Down
9 changes: 4 additions & 5 deletions frontend/app/views/directives/log-entry.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,12 @@
<user user-id="log.owner" icon-size="xs"></user>
</div>
<div class="col-md-6">
<span class="pull-right ml-xs" uib-dropdown ng-if="appConfig.connectors.cortex.enabled" if-permission="manageAction" allowed="{{permissions}}">
<a href class="text-primary noline nowrap" ng-click="getLogResponders(log.id, true)" uib-dropdown-toggle>
<span class="pull-right ml-xs" ng-if="appConfig.connectors.cortex.enabled" if-permission="manageAction" allowed="{{permissions}}">
<a href class="text-primary noline nowrap" ng-click="getLogResponders(log, true)">
<i class="fa fa-cog"></i>
Responders
<i class="fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu align-right" uib-dropdown-menu>
<!-- <ul class="dropdown-menu align-right" uib-dropdown-menu>
<li ng-if="logResponders && logResponders.length === 0">
<a href ng-click="getLogResponders(task.id, true)">
<strong><i class="fa fa-refresh mr-xxs"></i> No responders available</strong>
Expand All @@ -24,7 +23,7 @@
<br>
<small>{{responder.description}}</small></a>
</li>
</ul>
</ul> -->
</span>
<span class="pull-right" if-permission="manageTask" allowed="{{permissions}}">
<a href ng-click="dropLog()" uib-tooltip="Delete log" class="text-danger">
Expand Down
13 changes: 9 additions & 4 deletions frontend/app/views/partials/case/case.panelinfo.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,17 @@ <h3 class="box-title text-primary">
<span class="ml-xxs pull-right" uib-dropdown ng-if="appConfig.connectors.cortex.enabled" if-permission="manageAction" allowed="{{userPermissions}}">
<span class="mr-xxs text-primary">|</span>

<a href class="text-primary noline" ng-click="getCaseResponders(true)" uib-dropdown-toggle>
<a href class="text-primary noline" ng-click="getCaseResponders(true)">
<i class="text-info fa fa-cog"></i>
Responders
</a>

<!-- <a href class="text-primary noline" ng-click="getCaseResponders(true)" uib-dropdown-toggle>
<i class="text-primary fa fa-cog"></i>
Responders
<i class="text-primary fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu" uib-dropdown-menu>
</a> -->
<!-- <ul class="dropdown-menu" uib-dropdown-menu>
<li ng-if="caseResponders && caseResponders.length === 0">
<a href ng-click="getCaseResponders(true)">
<strong><i class="fa fa-refresh mr-xxs"></i> No responders available</strong>
Expand All @@ -83,7 +88,7 @@ <h3 class="box-title text-primary">
<br>
<small>{{responder.description}}</small></a>
</li>
</ul>
</ul> -->
</span>

<span class="ml-xxs pull-right" ng-if="appConfig.connectors.misp.enabled">
Expand Down
14 changes: 10 additions & 4 deletions frontend/app/views/partials/case/case.tasks.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@
<!-- Filters preview -->
<div class="row mt-s">
<div class="col-md-12 clearfix">
<div class="pull-left">
<h4>
Tasks List ({{tasks.values.length || 0}} of {{tasks.total}})
</h4>
</div>

<filters-preview filters="filtering.context.filters"
on-clear-item="removeFilter(field)"
on-clear-all="clearFilters()"></filters-preview>
Expand All @@ -17,9 +23,9 @@
</div>
</div>

<div class="row mv-l" ng-if="canEdit" ng-show="state.isNewTask">
<div class="row mb-xxs" ng-if="canEdit" ng-show="state.isNewTask">
<div class="col-md-12">
<form name="form" ng-submit="addTask(); state.isNewTask = false;">
<form name="form" ng-submit="addTask(); state.isNewTask = false;" class="filter-panel">
<div class="row">
<div class="col-sm-3">
<div class="form-group">
Expand All @@ -46,7 +52,7 @@
</div>
</div>

<div class="row" ng-show="!state.showGrouped && tasks.total !== 0">
<div class="row" ng-if="!state.showGrouped && tasks.total !== 0">
<div class="col-md-12">
<table class="table table-hover valigned tasks-table">
<thead>
Expand Down Expand Up @@ -146,7 +152,7 @@
</div>
</div>

<div class="row" ng-show="state.showGrouped && tasks.total !== 0">
<div class="row" ng-if="state.showGrouped && tasks.total !== 0">
<div class="col-md-12">
<div class="panel panel-default" ng-repeat="group in groupedTasks">
<div class="panel-heading">
Expand Down
8 changes: 4 additions & 4 deletions frontend/app/views/partials/case/case.tasks.item.html
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ <h4 class="mb-xs text-primary">

<span class="mh-xxs text-primary">|</span>

<a href class="text-primary noline" ng-click="getTaskResponders()" uib-dropdown-toggle>
<a href class="text-primary noline" ng-click="getTaskResponders(true)">
<i class="text-primary fa fa-cog"></i>
Responders
<i class="text-primary fa fa-angle-down"></i>
</a>
<!--
<ul class="dropdown-menu dropdown-menu-right" uib-dropdown-menu>
<li ng-if="taskResponders && taskResponders.length === 0">
<a href ng-click="getTaskResponders(true)">
Expand All @@ -57,7 +57,7 @@ <h4 class="mb-xs text-primary">
<br>
<small>{{responder.description}}</small></a>
</li>
</ul>
</ul> -->
</span>

</div>
Expand Down Expand Up @@ -235,7 +235,7 @@ <h4 class="vpad10 text-primary">Task sharing</h4>
shares="shares"
read-only="true"
on-delete="removeShare(share)"
permissions="userPermissions"
permissions="userPermissions"
></sharing-list>
</div>
</div>
Expand Down
18 changes: 2 additions & 16 deletions frontend/app/views/partials/observables/details/summary.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,11 @@ <h4 class="vpad10 text-primary">
</a>
</span>

<span class="ml-xxs action-button" if-permission="manageAction" allowed="{{userPermissions}}" uib-dropdown ng-if="appConfig.connectors.cortex.enabled">
<a href class="text-primary noline nowrap" ng-click="getObsResponders(artifact.id, true)" uib-dropdown-toggle>
<span class="ml-xxs action-button" if-permission="manageAction" allowed="{{userPermissions}}" ng-if="appConfig.connectors.cortex.enabled">
<a href class="text-primary noline nowrap" ng-click="getObsResponders(artifact, true)">
<i class="text-primary fa fa-cog"></i>
Responders
<i class="text-primary fa fa-angle-down"></i>
</a>
<ul class="dropdown-menu align-right" uib-dropdown-menu>
<li ng-if="obsResponders && obsResponders.length === 0">
<a href ng-click="getObsResponders(artifact.id, true)">
<strong><i class="fa fa-refresh mr-xxs"></i> No responders available</strong>
</a>
</li>
<li ng-repeat="responder in obsResponders">
<a href ng-click="runResponder(responder.id, responder.name, artifact)">
<strong>{{responder.name}}</strong>
<br>
<small>{{responder.description}}</small></a>
</li>
</ul>
</span>
</div>
</h4>
Expand Down

0 comments on commit 8a44670

Please sign in to comment.