diff --git a/thehive-backend/conf/routes b/thehive-backend/conf/routes
index 8deffee8c2..ab81c946e1 100644
--- a/thehive-backend/conf/routes
+++ b/thehive-backend/conf/routes
@@ -34,9 +34,9 @@ POST /api/case/artifact/_stats controllers.ArtifactCtrl.stats
POST /api/case/:caseId/artifact controllers.ArtifactCtrl.create(caseId)
GET /api/case/artifact/:artifactId controllers.ArtifactCtrl.get(artifactId)
DELETE /api/case/artifact/:artifactId controllers.ArtifactCtrl.delete(artifactId)
+PATCH /api/case/artifact/_bulk controllers.ArtifactCtrl.bulkUpdate()
PATCH /api/case/artifact/:artifactId controllers.ArtifactCtrl.update(artifactId)
GET /api/case/artifact/:artifactId/similar controllers.ArtifactCtrl.findSimilar(artifactId)
-PATCH /api/case/artifact/_bulk controllers.ArtifactCtrl.bulkUpdate()
POST /api/case/:caseId/task/_search controllers.TaskCtrl.findInCase(caseId)
POST /api/case/task/_search controllers.TaskCtrl.find()
diff --git a/ui/app/scripts/controllers/case/CaseObservablesCtrl.js b/ui/app/scripts/controllers/case/CaseObservablesCtrl.js
index c629ec25c3..32dbb87d01 100644
--- a/ui/app/scripts/controllers/case/CaseObservablesCtrl.js
+++ b/ui/app/scripts/controllers/case/CaseObservablesCtrl.js
@@ -423,18 +423,27 @@
$scope.chTLP = '-1';
$scope.updateTLP = function (value) {
$scope.chTLP = value;
- angular.forEach($scope.selection.artifacts, function (te) {
- $scope.updateField(te.id, 'tlp', $scope.chTLP);
- });
- $scope.chTLP = '-1';
+ CaseArtifactSrv.bulkUpdate(_.pluck($scope.selection.artifacts, 'id'), {'tlp': $scope.chTLP})
+ .then(function(){
+ $scope.chTLP = '-1';
+ NotificationSrv.log('Selected observables have been updated successfully', 'success');
+ $scope.selection.Action='main';
+ });
};
- $scope.setIOC = function (action) {
- var ioc = action === 'setIocFlog';
-
- angular.forEach($scope.selection.artifacts, function (te) {
- $scope.updateField(te.id, 'ioc', ioc);
- });
+ $scope.setIOC = function (ioc) {
+ CaseArtifactSrv.bulkUpdate(_.pluck($scope.selection.artifacts, 'id'), {ioc: ioc})
+ .then(function(){
+ NotificationSrv.log('Selected observables have been updated successfully', 'success');
+ $scope.selection.Action='main';
+ });
+ };
+ $scope.setSightedFlag = function (sighted) {
+ CaseArtifactSrv.bulkUpdate(_.pluck($scope.selection.artifacts, 'id'), {sighted: sighted})
+ .then(function(){
+ NotificationSrv.log('Selected observables have been updated successfully', 'success');
+ $scope.selection.Action='main';
+ });
};
$scope.updateField = function (id, fieldName, newValue) {
diff --git a/ui/app/scripts/controllers/case/ObservableCreationCtrl.js b/ui/app/scripts/controllers/case/ObservableCreationCtrl.js
index 41665bfecc..9b2cc8aca4 100644
--- a/ui/app/scripts/controllers/case/ObservableCreationCtrl.js
+++ b/ui/app/scripts/controllers/case/ObservableCreationCtrl.js
@@ -13,6 +13,7 @@
$scope.params = {
bulk: false,
ioc: false,
+ sighted: false,
data: '',
tlp: 2,
message: '',
@@ -71,6 +72,7 @@
postData = {
dataType: params.dataType,
ioc: params.ioc,
+ sighted: params.sighted,
tlp: params.tlp,
message: params.message,
tags: _.unique(_.pluck($scope.tags, 'text'))
diff --git a/ui/app/scripts/services/CaseArtifactSrv.js b/ui/app/scripts/services/CaseArtifactSrv.js
index d14863d047..4ac67150cf 100644
--- a/ui/app/scripts/services/CaseArtifactSrv.js
+++ b/ui/app/scripts/services/CaseArtifactSrv.js
@@ -1,7 +1,7 @@
(function() {
'use strict';
angular.module('theHiveServices')
- .factory('CaseArtifactSrv', function(FileResource) {
+ .factory('CaseArtifactSrv', function($http, FileResource) {
var api = null;
var filters = null;
@@ -20,6 +20,10 @@
}
return api;
+ },
+
+ bulkUpdate: function(ids, update) {
+ return $http.patch('./api/case/artifact/_bulk', _.extend({ids: ids}, update));
}
};
diff --git a/ui/app/scripts/services/ObservablesUISrv.js b/ui/app/scripts/services/ObservablesUISrv.js
index c36080e08f..fdf2bdeaf1 100644
--- a/ui/app/scripts/services/ObservablesUISrv.js
+++ b/ui/app/scripts/services/ObservablesUISrv.js
@@ -7,8 +7,8 @@
actions: {
main: 'Action',
export: 'Export',
- setIocFlog: 'Set IOC flog',
- unsetIocFlog: 'Unset IOC flog',
+ changeSightedFlog: 'Change sighted flag',
+ changeIOCFlog: 'Change sighted flag',
changeTlp: 'Change TLP',
addTags: 'Add tags',
runAnalyzers: 'Run analyzers',
@@ -40,6 +40,11 @@
type: 'boolean',
defaultValue: null
},
+ sighted: {
+ field: 'sighted',
+ type: 'boolean',
+ defaultValue: null
+ },
tlp: {
field: 'tlp',
type: 'number',
diff --git a/ui/app/views/directives/flow/observable.html b/ui/app/views/directives/flow/observable.html
index 9a771d382a..de75493724 100644
--- a/ui/app/views/directives/flow/observable.html
+++ b/ui/app/views/directives/flow/observable.html
@@ -9,7 +9,7 @@