From 1c2d1714e32dbb881674dde78d770a01a812b723 Mon Sep 17 00:00:00 2001 From: Zach Priddy Date: Wed, 13 Mar 2019 22:52:51 -0700 Subject: [PATCH 01/11] Add AddArtifactToCase --- .../cortex/services/ActionOperation.scala | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index dad270cbbd..64f28acda9 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -65,6 +65,10 @@ case class AddTagToAlert(tag: String, status: ActionOperationStatus.Type = Actio override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AddTagToAlert = copy(status = newStatus, message = newMessage) } +case class AddArtifactToCase(tag: String, status: ActionOperationStatus.Type = ActionOperationStatus.Waiting, message: String = "") extends ActionOperation { + override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AddArtifactToCase = copy(status = newStatus, message = newMessage) +} + object ActionOperation { val addTagToCaseWrites = Json.writes[AddTagToCase] val addTagToArtifactWrites = Json.writes[AddTagToArtifact] @@ -74,6 +78,7 @@ object ActionOperation { val markAlertAsReadWrites = Json.writes[MarkAlertAsRead] val addLogToTaskWrites = Json.writes[AddLogToTask] val addTagToAlertWrites = Json.writes[AddTagToAlert] + val addArtifactToCaseWrites = Json.writes[AddArtifactToCase] implicit val actionOperationReads: Reads[ActionOperation] = Reads[ActionOperation](json ⇒ (json \ "type").asOpt[String].fold[JsResult[ActionOperation]](JsError("type is missing in action operation")) { case "AddTagToCase" ⇒ (json \ "tag").validate[String].map(tag ⇒ AddTagToCase(tag)) @@ -91,6 +96,11 @@ object ActionOperation { owner ← (json \ "owner").validateOpt[String] } yield AddLogToTask(content, owner) case "AddTagToAlert" => (json \ "tag").validate[String].map(tag ⇒ AddTagToAlert(tag)) + case "AddArtifactToCase" ⇒ for { + data ← (json \ "data").validate[String] + dataType ← (json \ "dataType").validate[String] + message ← (json \ "message").validate[String] + } yield AddArtifactToCase(data, dataType, message) case other ⇒ JsError(s"Unknown operation $other") }) implicit val actionOperationWrites: Writes[ActionOperation] = Writes[ActionOperation] { @@ -102,6 +112,7 @@ object ActionOperation { case a: MarkAlertAsRead ⇒ markAlertAsReadWrites.writes(a) case a: AddLogToTask ⇒ addLogToTaskWrites.writes(a) case a: AddTagToAlert ⇒ addTagToAlertWrites.writes(a) + case a: AddArtifactToCase ⇒ addArtifactToCaseWrites(a) case a ⇒ Json.obj("unsupported operation" → a.toString) } } @@ -182,7 +193,7 @@ class ActionOperationSrv @Inject() ( caze ← findCaseEntity(entity) _ ← taskSrv.create(caze, Fields(fields)) } yield operation.updateStatus(ActionOperationStatus.Success, "") - case AddCustomFields(name, tpe, value, _, _) ⇒ + case AddCustomFields(name, tpe, value, _, _) for { initialCase ← findCaseEntity(entity) caze ← caseSrv.get(initialCase.id) @@ -205,6 +216,11 @@ class ActionOperationSrv @Inject() ( task ← findTaskEntity(entity) _ ← logSrv.create(task, Fields.empty.set("message", content).set("owner", owner.map(JsString))) } yield operation.updateStatus(ActionOperationStatus.Success, "") + case AddArtifactToCase(data, dataType message, _, _) ⇒ + for { + initialCase ← findCaseEntity(entity) + artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", message)) + } yield operation.updateStatus(ActionOperationStatus.Success, "") case AddTagToAlert(tag, _, _) => entity match { case initialAlert: Alert ⇒ From 54cd0fc6bd4bcf0b1eddc262d8e6344893d339f1 Mon Sep 17 00:00:00 2001 From: Zach Priddy Date: Wed, 13 Mar 2019 22:59:09 -0700 Subject: [PATCH 02/11] Fix --- .../app/connectors/cortex/services/ActionOperation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index 64f28acda9..a5b3954e94 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -193,7 +193,7 @@ class ActionOperationSrv @Inject() ( caze ← findCaseEntity(entity) _ ← taskSrv.create(caze, Fields(fields)) } yield operation.updateStatus(ActionOperationStatus.Success, "") - case AddCustomFields(name, tpe, value, _, _) + case AddCustomFields(name, tpe, value, _, _) ⇒ for { initialCase ← findCaseEntity(entity) caze ← caseSrv.get(initialCase.id) From 758c739b4eb8399478dda7f11daf668759a6d035 Mon Sep 17 00:00:00 2001 From: Zach Priddy Date: Wed, 13 Mar 2019 23:03:15 -0700 Subject: [PATCH 03/11] Fix again --- .../app/connectors/cortex/services/ActionOperation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index a5b3954e94..93375743d3 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -216,7 +216,7 @@ class ActionOperationSrv @Inject() ( task ← findTaskEntity(entity) _ ← logSrv.create(task, Fields.empty.set("message", content).set("owner", owner.map(JsString))) } yield operation.updateStatus(ActionOperationStatus.Success, "") - case AddArtifactToCase(data, dataType message, _, _) ⇒ + case AddArtifactToCase(data, dataType, message, _, _) ⇒ for { initialCase ← findCaseEntity(entity) artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", message)) From 1477e371b16b593a95b5a28324d919130fa93c12 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Wed, 13 Mar 2019 23:07:32 -0700 Subject: [PATCH 04/11] Learning Scala --- .../app/connectors/cortex/services/ActionOperation.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index 93375743d3..57f04dfcf3 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -65,7 +65,7 @@ case class AddTagToAlert(tag: String, status: ActionOperationStatus.Type = Actio override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AddTagToAlert = copy(status = newStatus, message = newMessage) } -case class AddArtifactToCase(tag: String, status: ActionOperationStatus.Type = ActionOperationStatus.Waiting, message: String = "") extends ActionOperation { +case class AddArtifactToCase(data: String, dataType: String, dataMessage: String, status: ActionOperationStatus.Type = ActionOperationStatus.Waiting, message: String = "") extends ActionOperation { override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AddArtifactToCase = copy(status = newStatus, message = newMessage) } @@ -99,7 +99,7 @@ object ActionOperation { case "AddArtifactToCase" ⇒ for { data ← (json \ "data").validate[String] dataType ← (json \ "dataType").validate[String] - message ← (json \ "message").validate[String] + dataMessage ← (json \ "message").validate[String] } yield AddArtifactToCase(data, dataType, message) case other ⇒ JsError(s"Unknown operation $other") }) @@ -216,10 +216,10 @@ class ActionOperationSrv @Inject() ( task ← findTaskEntity(entity) _ ← logSrv.create(task, Fields.empty.set("message", content).set("owner", owner.map(JsString))) } yield operation.updateStatus(ActionOperationStatus.Success, "") - case AddArtifactToCase(data, dataType, message, _, _) ⇒ + case AddArtifactToCase(data, dataType, dataMessage, _, _) ⇒ for { initialCase ← findCaseEntity(entity) - artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", message)) + artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", dataMessage)) } yield operation.updateStatus(ActionOperationStatus.Success, "") case AddTagToAlert(tag, _, _) => entity match { From e043ab220a03c8cfe42d02259fa5c1bcbb5de146 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Wed, 13 Mar 2019 23:07:32 -0700 Subject: [PATCH 05/11] Learning Scala --- .../app/connectors/cortex/services/ActionOperation.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index 93375743d3..57f04dfcf3 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -65,7 +65,7 @@ case class AddTagToAlert(tag: String, status: ActionOperationStatus.Type = Actio override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AddTagToAlert = copy(status = newStatus, message = newMessage) } -case class AddArtifactToCase(tag: String, status: ActionOperationStatus.Type = ActionOperationStatus.Waiting, message: String = "") extends ActionOperation { +case class AddArtifactToCase(data: String, dataType: String, dataMessage: String, status: ActionOperationStatus.Type = ActionOperationStatus.Waiting, message: String = "") extends ActionOperation { override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AddArtifactToCase = copy(status = newStatus, message = newMessage) } @@ -99,7 +99,7 @@ object ActionOperation { case "AddArtifactToCase" ⇒ for { data ← (json \ "data").validate[String] dataType ← (json \ "dataType").validate[String] - message ← (json \ "message").validate[String] + dataMessage ← (json \ "message").validate[String] } yield AddArtifactToCase(data, dataType, message) case other ⇒ JsError(s"Unknown operation $other") }) @@ -216,10 +216,10 @@ class ActionOperationSrv @Inject() ( task ← findTaskEntity(entity) _ ← logSrv.create(task, Fields.empty.set("message", content).set("owner", owner.map(JsString))) } yield operation.updateStatus(ActionOperationStatus.Success, "") - case AddArtifactToCase(data, dataType, message, _, _) ⇒ + case AddArtifactToCase(data, dataType, dataMessage, _, _) ⇒ for { initialCase ← findCaseEntity(entity) - artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", message)) + artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", dataMessage)) } yield operation.updateStatus(ActionOperationStatus.Success, "") case AddTagToAlert(tag, _, _) => entity match { From 4ce0223f91093c84d454749fc470a008f9f6bb48 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Wed, 13 Mar 2019 23:24:07 -0700 Subject: [PATCH 06/11] More Fixes --- .../app/connectors/cortex/services/ActionOperation.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index 57f04dfcf3..0fc5516052 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -100,7 +100,7 @@ object ActionOperation { data ← (json \ "data").validate[String] dataType ← (json \ "dataType").validate[String] dataMessage ← (json \ "message").validate[String] - } yield AddArtifactToCase(data, dataType, message) + } yield AddArtifactToCase(data, dataType, dataMessage) case other ⇒ JsError(s"Unknown operation $other") }) implicit val actionOperationWrites: Writes[ActionOperation] = Writes[ActionOperation] { @@ -112,7 +112,7 @@ object ActionOperation { case a: MarkAlertAsRead ⇒ markAlertAsReadWrites.writes(a) case a: AddLogToTask ⇒ addLogToTaskWrites.writes(a) case a: AddTagToAlert ⇒ addTagToAlertWrites.writes(a) - case a: AddArtifactToCase ⇒ addArtifactToCaseWrites(a) + case a: AddArtifactToCase ⇒ addArtifactToCaseWrites.writes(a) case a ⇒ Json.obj("unsupported operation" → a.toString) } } From e31c453217be33f0f4fe634cb9090e4834928ed5 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Thu, 14 Mar 2019 12:08:10 -0700 Subject: [PATCH 07/11] Add assign case --- .../cortex/services/ActionOperation.scala | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index 0fc5516052..c6cc93f309 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -69,6 +69,10 @@ case class AddArtifactToCase(data: String, dataType: String, dataMessage: String override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AddArtifactToCase = copy(status = newStatus, message = newMessage) } +case class AssignCase(owner: String, status: ActionOperationStatus.Type = ActionOperationStatus.Waiting, message: String = "") extends ActionOperation { + override def updateStatus(newStatus: ActionOperationStatus.Type, newMessage: String): AssignCase = copy(status = newStatus, message = newMessage) +} + object ActionOperation { val addTagToCaseWrites = Json.writes[AddTagToCase] val addTagToArtifactWrites = Json.writes[AddTagToArtifact] @@ -79,6 +83,7 @@ object ActionOperation { val addLogToTaskWrites = Json.writes[AddLogToTask] val addTagToAlertWrites = Json.writes[AddTagToAlert] val addArtifactToCaseWrites = Json.writes[AddArtifactToCase] + val assignCaseWrites = Json.writes[AssignCase] implicit val actionOperationReads: Reads[ActionOperation] = Reads[ActionOperation](json ⇒ (json \ "type").asOpt[String].fold[JsResult[ActionOperation]](JsError("type is missing in action operation")) { case "AddTagToCase" ⇒ (json \ "tag").validate[String].map(tag ⇒ AddTagToCase(tag)) @@ -101,19 +106,23 @@ object ActionOperation { dataType ← (json \ "dataType").validate[String] dataMessage ← (json \ "message").validate[String] } yield AddArtifactToCase(data, dataType, dataMessage) + case "AssignCase" for { + owner ← (json \ "owner").validate[String] + } yield AssignCase(owner) case other ⇒ JsError(s"Unknown operation $other") }) implicit val actionOperationWrites: Writes[ActionOperation] = Writes[ActionOperation] { - case a: AddTagToCase ⇒ addTagToCaseWrites.writes(a) - case a: AddTagToArtifact ⇒ addTagToArtifactWrites.writes(a) - case a: CreateTask ⇒ createTaskWrites.writes(a) - case a: AddCustomFields ⇒ addCustomFieldsWrites.writes(a) - case a: CloseTask ⇒ closeTaskWrites.writes(a) - case a: MarkAlertAsRead ⇒ markAlertAsReadWrites.writes(a) - case a: AddLogToTask ⇒ addLogToTaskWrites.writes(a) - case a: AddTagToAlert ⇒ addTagToAlertWrites.writes(a) + case a: AddTagToCase ⇒ addTagToCaseWrites.writes(a) + case a: AddTagToArtifact ⇒ addTagToArtifactWrites.writes(a) + case a: CreateTask ⇒ createTaskWrites.writes(a) + case a: AddCustomFields ⇒ addCustomFieldsWrites.writes(a) + case a: CloseTask ⇒ closeTaskWrites.writes(a) + case a: MarkAlertAsRead ⇒ markAlertAsReadWrites.writes(a) + case a: AddLogToTask ⇒ addLogToTaskWrites.writes(a) + case a: AddTagToAlert ⇒ addTagToAlertWrites.writes(a) case a: AddArtifactToCase ⇒ addArtifactToCaseWrites.writes(a) - case a ⇒ Json.obj("unsupported operation" → a.toString) + case a: AssignCase ⇒ assignCaseWrites.writes(a) + case a ⇒ Json.obj("unsupported operation" → a.toString) } } @@ -221,6 +230,12 @@ class ActionOperationSrv @Inject() ( initialCase ← findCaseEntity(entity) artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", dataMessage)) } yield operation.updateStatus(ActionOperationStatus.Success, "") + case AssignCase(ower, _, ) ⇒ + for { + initialCase ← findCaseEntity(entity) + caze ← caseSrv.get(initialCase.id) + _ ← caseSrv.update(caze, Fields.empty.set("owner", owner), ModifyConfig(retryOnConflict = 0, version = Some(caze.version))) + } yield operation.updateStatus(ActionOperationStatus.Success, "") case AddTagToAlert(tag, _, _) => entity match { case initialAlert: Alert ⇒ From 2fd9eb0a0ff05ced1333c08fcf96fa5556064d56 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Thu, 14 Mar 2019 12:11:58 -0700 Subject: [PATCH 08/11] fix --- .../app/connectors/cortex/services/ActionOperation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index c6cc93f309..89d4b45b40 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -230,7 +230,7 @@ class ActionOperationSrv @Inject() ( initialCase ← findCaseEntity(entity) artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", dataMessage)) } yield operation.updateStatus(ActionOperationStatus.Success, "") - case AssignCase(ower, _, ) ⇒ + case AssignCase(ower, _, _) ⇒ for { initialCase ← findCaseEntity(entity) caze ← caseSrv.get(initialCase.id) From 692f6d35bd19670c6b531c88801ef4b433094ff3 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Thu, 14 Mar 2019 12:14:14 -0700 Subject: [PATCH 09/11] Fixes --- .../app/connectors/cortex/services/ActionOperation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index 89d4b45b40..4260c11c80 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -106,7 +106,7 @@ object ActionOperation { dataType ← (json \ "dataType").validate[String] dataMessage ← (json \ "message").validate[String] } yield AddArtifactToCase(data, dataType, dataMessage) - case "AssignCase" for { + case "AssignCase" ⇒ for { owner ← (json \ "owner").validate[String] } yield AssignCase(owner) case other ⇒ JsError(s"Unknown operation $other") From 65332b1ffd013451b7803ddf2211a58bcaeaeaa4 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Thu, 14 Mar 2019 12:40:32 -0700 Subject: [PATCH 10/11] Typo Fix --- .../app/connectors/cortex/services/ActionOperation.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala index 4260c11c80..d5b845ddf8 100644 --- a/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala +++ b/thehive-cortex/app/connectors/cortex/services/ActionOperation.scala @@ -230,7 +230,7 @@ class ActionOperationSrv @Inject() ( initialCase ← findCaseEntity(entity) artifact ← artifactSrv.create(initialCase.id, Fields.empty.set("data", data).set("dataType", dataType).set("message", dataMessage)) } yield operation.updateStatus(ActionOperationStatus.Success, "") - case AssignCase(ower, _, _) ⇒ + case AssignCase(owner, _, _) ⇒ for { initialCase ← findCaseEntity(entity) caze ← caseSrv.get(initialCase.id) From 8f0724132f9fb9dbbbd516461ef52302f9515e64 Mon Sep 17 00:00:00 2001 From: Zachary Priddy Date: Thu, 14 Mar 2019 21:27:25 -0700 Subject: [PATCH 11/11] Add new quickfilters --- ui/app/scripts/controllers/alert/AlertListCtrl.js | 8 ++++++++ ui/app/scripts/controllers/case/CaseListCtrl.js | 15 +++++++++++++++ ui/app/views/partials/alert/list/toolbar.html | 4 ++++ ui/app/views/partials/case/list/toolbar.html | 3 +++ 4 files changed, 30 insertions(+) diff --git a/ui/app/scripts/controllers/alert/AlertListCtrl.js b/ui/app/scripts/controllers/alert/AlertListCtrl.js index ba6c919b31..409d94d470 100755 --- a/ui/app/scripts/controllers/alert/AlertListCtrl.js +++ b/ui/app/scripts/controllers/alert/AlertListCtrl.js @@ -501,6 +501,14 @@ }); }; + this.filterByNewAndUpdated = function() { + self.filtering.clearFilters() + .then(function(){ + self.addFilterValue('status', 'New'); + self.addFilterValue('status', 'Updated'); + }); + }; + this.filterBySeverity = function(numericSev) { self.addFilterValue('severity', Severity.values[numericSev]); }; diff --git a/ui/app/scripts/controllers/case/CaseListCtrl.js b/ui/app/scripts/controllers/case/CaseListCtrl.js index e058e0e345..0997c18634 100644 --- a/ui/app/scripts/controllers/case/CaseListCtrl.js +++ b/ui/app/scripts/controllers/case/CaseListCtrl.js @@ -199,6 +199,21 @@ }); }; + this.filterMyOpenCases = function() { + this.uiSrv.clearFilters() + .then(function(){ + var currentUser = AuthenticationSrv.currentUser; + self.uiSrv.activeFilters.owner = { + value: [{ + text: currentUser.id, + label: currentUser.name + }] + }; + self.filter(); + self.addFilterValue('status', 'Open'); + }); + }; + this.filterByStatus = function(status) { this.uiSrv.clearFilters() .then(function(){ diff --git a/ui/app/views/partials/alert/list/toolbar.html b/ui/app/views/partials/alert/list/toolbar.html index 9f8d5cd70b..e887d13cf0 100644 --- a/ui/app/views/partials/alert/list/toolbar.html +++ b/ui/app/views/partials/alert/list/toolbar.html @@ -42,12 +42,16 @@ diff --git a/ui/app/views/partials/case/list/toolbar.html b/ui/app/views/partials/case/list/toolbar.html index a516b16b0f..b837230665 100644 --- a/ui/app/views/partials/case/list/toolbar.html +++ b/ui/app/views/partials/case/list/toolbar.html @@ -9,6 +9,9 @@