From 87a10ff2cda9a254c9a28ad7ec63d881dcd53378 Mon Sep 17 00:00:00 2001 From: Nabil Adouani Date: Thu, 19 Nov 2020 16:25:51 +0100 Subject: [PATCH] #1672 Refine alert modal and case related alerts panel --- frontend/app/scripts/app.js | 6 +-- .../app/scripts/controllers/SearchCtrl.js | 16 +++++-- .../controllers/alert/AlertEventCtrl.js | 6 +-- .../controllers/case/CaseAlertsCtrl.js | 11 ++++- .../app/scripts/services/api/AlertingSrv.js | 15 +++---- frontend/app/scripts/services/api/CaseSrv.js | 27 +++++++++--- .../views/partials/alert/event.dialog.html | 4 +- .../app/views/partials/case/case.alerts.html | 42 +++++++++---------- 8 files changed, 74 insertions(+), 53 deletions(-) diff --git a/frontend/app/scripts/app.js b/frontend/app/scripts/app.js index 019121422f..800a72397d 100644 --- a/frontend/app/scripts/app.js +++ b/frontend/app/scripts/app.js @@ -411,11 +411,7 @@ angular.module('thehive', [ controller: 'CaseAlertsCtrl', resolve: { alerts: function($stateParams, CaseSrv) { - return CaseSrv.alerts({range: 'all'}, { - query: { - case: $stateParams.caseId - } - }).$promise; + return CaseSrv.alerts($stateParams.caseId); } }, guard: { diff --git a/frontend/app/scripts/controllers/SearchCtrl.js b/frontend/app/scripts/controllers/SearchCtrl.js index 0ba6db0c72..6eb5522550 100644 --- a/frontend/app/scripts/controllers/SearchCtrl.js +++ b/frontend/app/scripts/controllers/SearchCtrl.js @@ -1,7 +1,7 @@ (function() { 'use strict'; angular.module('theHiveControllers') - .controller('SearchCtrl', function($scope, $q, $stateParams, $uibModal, PSearchSrv, CaseTemplateSrv, CaseTaskSrv, NotificationSrv, EntitySrv, UserSrv, QueryBuilderSrv, GlobalSearchSrv, metadata) { + .controller('SearchCtrl', function($scope, $q, $stateParams, $uibModal, PSearchSrv, AlertingSrv, CaseTemplateSrv, CaseTaskSrv, NotificationSrv, EntitySrv, UserSrv, QueryBuilderSrv, GlobalSearchSrv, metadata) { $scope.metadata = metadata; $scope.toolbar = [ // {name: 'all', label: 'All', icon: 'glyphicon glyphicon-search'}, @@ -42,14 +42,24 @@ controllerAs: 'dialog', size: 'max', resolve: { - event: event, + event: function() { + return AlertingSrv.get(event.id); + }, templates: function() { return CaseTemplateSrv.list(); }, readonly: true } - }).result.then(function(/*response*/) { + }) + .result + .then(function(/*response*/) { $scope.searchResults.update(); + }) + .catch(function(err) { + if(err && !_.isString(err)) { + NotificationSrv.error('AlertPreview', err.data, err.status); + } + }); }; diff --git a/frontend/app/scripts/controllers/alert/AlertEventCtrl.js b/frontend/app/scripts/controllers/alert/AlertEventCtrl.js index c36e492711..c1b8d09075 100644 --- a/frontend/app/scripts/controllers/alert/AlertEventCtrl.js +++ b/frontend/app/scripts/controllers/alert/AlertEventCtrl.js @@ -39,11 +39,6 @@ AlertingSrv.get(eventId).then(function(data) { self.event = data; self.loading = false; - - self.dataTypes = _.countBy(self.event.artifacts, function(attr) { - return attr.dataType; - }); - }, function(response) { self.loading = false; NotificationSrv.error('AlertEventCtrl', response.data, response.status); @@ -185,6 +180,7 @@ self.copyId = function(id) { clipboard.copyText(id); + NotificationSrv.log('Alert ID has been copied to clipboard', 'success'); }; this.$onInit = function() { diff --git a/frontend/app/scripts/controllers/case/CaseAlertsCtrl.js b/frontend/app/scripts/controllers/case/CaseAlertsCtrl.js index f410a7e27f..b695e32698 100644 --- a/frontend/app/scripts/controllers/case/CaseAlertsCtrl.js +++ b/frontend/app/scripts/controllers/case/CaseAlertsCtrl.js @@ -1,7 +1,7 @@ (function() { 'use strict'; angular.module('theHiveControllers').controller('CaseAlertsCtrl', - function($scope, $state, $stateParams, $uibModal, $timeout, CaseTabsSrv, VersionSrv, alerts) { + function($scope, $state, $stateParams, $uibModal, $timeout, CaseTabsSrv, VersionSrv, NotificationSrv, alerts) { $scope.caseId = $stateParams.caseId; $scope.alerts = alerts; $scope.alertStats = []; @@ -84,9 +84,16 @@ templates: function() { //return CaseTemplateSrv.list(); return []; - }, + }, readonly: true } + }) + .result + .catch(function(err) { + if(err && !_.isString(err)) { + NotificationSrv.error('AlertPreview', err.data, err.status); + } + }); }; diff --git a/frontend/app/scripts/services/api/AlertingSrv.js b/frontend/app/scripts/services/api/AlertingSrv.js index 954644aec3..0d20782547 100644 --- a/frontend/app/scripts/services/api/AlertingSrv.js +++ b/frontend/app/scripts/services/api/AlertingSrv.js @@ -1,7 +1,7 @@ (function() { 'use strict'; angular.module('theHiveServices') - .factory('AlertingSrv', function($q, $http, $rootScope, StatSrv, StreamSrv, PSearchSrv, PaginatedQuerySrv, QuerySrv) { + .factory('AlertingSrv', function($q, $http, $rootScope, StatSrv, StreamSrv, PSearchSrv, PaginatedQuerySrv) { var baseUrl = './api/alert'; @@ -144,15 +144,10 @@ }, get: function(alertId) { - return QuerySrv.call('v1', [{ - '_name': 'getAlert', - 'idOrName': alertId - } - ], { - name: 'get-alert-' + alertId - }).then(function(response) { - return response[0]; - }); + return $http.get('./api/v1/alert/' + alertId) + .then(function(response) { + return response.data; + }); }, create: function(alertId, data) { diff --git a/frontend/app/scripts/services/api/CaseSrv.js b/frontend/app/scripts/services/api/CaseSrv.js index e5e391ac98..1597dd9f9a 100644 --- a/frontend/app/scripts/services/api/CaseSrv.js +++ b/frontend/app/scripts/services/api/CaseSrv.js @@ -32,11 +32,11 @@ url: './api/case/_search', isArray: true }, - alerts: { - method: 'POST', - url: './api/alert/_search', - isArray: true - } + // alerts: { + // method: 'POST', + // url: './api/alert/_search', + // isArray: true + // } }); this.get = resource.get; @@ -48,6 +48,23 @@ this.merge = resource.merge; this.query = resource.query; + this.alerts = function(id) { + var defer = $q.defer(); + + QuerySrv.call('v1', [{ + '_name': 'getCase', + 'idOrName': id + }, {'_name': 'alerts'}], { + name:'get-case-alerts' + id + }).then(function(response) { + defer.resolve(response); + }).catch(function(err){ + defer.reject(err); + }); + + return defer.promise; + }; + this.getById = function(id, withStats) { var defer = $q.defer(); diff --git a/frontend/app/views/partials/alert/event.dialog.html b/frontend/app/views/partials/alert/event.dialog.html index e43d493888..465646c9cf 100644 --- a/frontend/app/views/partials/alert/event.dialog.html +++ b/frontend/app/views/partials/alert/event.dialog.html @@ -1,6 +1,6 @@ - +
- - - - + + - - + + + + + + + + +
@@ -40,7 +40,7 @@ + Type @@ -48,14 +48,6 @@ - - Status - - - - - Title @@ -94,8 +86,8 @@
{{::event.sourceRef}} @@ -109,18 +101,10 @@ {{::event.type}} - {{::event.status}} -
{{::event.title}}
-
- - None - {{tag}} -
{{::event.source}} @@ -129,13 +113,29 @@ {{::event.artifacts.length || 0}}{{event.date | showDate}}{{event.date | shortDate}}
+
+ + None + {{tag}} +
+
+ +