Skip to content

Commit

Permalink
#1968 Add manageProcedure permission to profile dialog.
Browse files Browse the repository at this point in the history
  • Loading branch information
nadouani committed Apr 15, 2021
1 parent c8b24f9 commit 6475b86
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 36 deletions.
28 changes: 16 additions & 12 deletions frontend/app/scripts/services/api/ProfileSrv.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
(function() {
(function () {
'use strict';
angular.module('theHiveServices')
.service('ProfileSrv', function($http) {
.service('ProfileSrv', function ($http) {
var self = this;
var baseUrl = './api/profile';

Expand Down Expand Up @@ -46,6 +46,7 @@
'manageShare',
'manageObservable',
'manageTask',
'manageProcedure',
'manageAction',
'manageAnalyse',
'accessTheHiveFS'
Expand All @@ -59,39 +60,42 @@
manageShare: 'Manage sharing',
manageObservable: 'Manage observables',
manageTask: 'Manage tasks',
manageProcedure: 'Manage TTPs',
manageAction: 'Run Cortex responders',
manageAnalyse: 'Run Cortex analyzer',
accessTheHiveFS: 'Access to TheHiveFS service'
}
}
};

this.list = function() {
return $http.get(baseUrl, {params: {
range: 'all'
}});
this.list = function () {
return $http.get(baseUrl, {
params: {
range: 'all'
}
});
};

this.get = function(name) {
this.get = function (name) {
return $http.get(baseUrl + '/' + name);
};

this.map = function() {
this.map = function () {
return self.list()
.then(function(response) {
.then(function (response) {
return _.indexBy(response.data, 'name');
});
};

this.create = function(profile) {
this.create = function (profile) {
return $http.post(baseUrl, profile);
};

this.update = function(id, profile) {
this.update = function (id, profile) {
return $http.patch(baseUrl + '/' + id, profile);
};

this.remove = function(id) {
this.remove = function (id) {
return $http.delete(baseUrl + '/' + id);
};
});
Expand Down
67 changes: 45 additions & 22 deletions frontend/app/views/partials/case/case.procedures.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<div ng-include="'views/partials/case/procedures/toolbar.html'"></div>

<div class="mt-xs filter-panel" ng-include="'views/partials/case/procedures/filters.html'" ng-show="$vm.filtering.context.showFilters"></div>
<div class="mt-xs filter-panel" ng-include="'views/partials/case/procedures/filters.html'"
ng-show="$vm.filtering.context.showFilters"></div>

<!-- Filters preview -->
<div class="row mt-xs">
Expand All @@ -11,7 +12,8 @@ <h4>
</h4>
</div>

<filters-preview filters="$vm.filtering.context.filters" on-clear-item="$vm.removeFilter(field)" on-clear-all="$vm.clearFilters()"></filters-preview>
<filters-preview filters="$vm.filtering.context.filters" on-clear-item="$vm.removeFilter(field)"
on-clear-all="$vm.clearFilters()"></filters-preview>
</div>
</div>

Expand All @@ -28,15 +30,17 @@ <h4>
<div class="ttp-tactic">
<a href class="text-default" ng-click="$vm.sortByField('tactic')">
Tactic
<i ng-show="$vm.filtering.context.sort.indexOf('+tactic') === -1 && $vm.filtering.context.sort.indexOf('-tactic') === -1" class="fa fa-sort"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('+tactic') === -1 && $vm.filtering.context.sort.indexOf('-tactic') === -1"
class="fa fa-sort"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('+tactic') !== -1" class="fa fa-caret-up"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('-tactic') !== -1" class="fa fa-caret-down"></i>
</a>
</div>
<div class="ttp-name">
<a href class="text-default" ng-click="$vm.sortByField('patternId')">
Technique
<i ng-show="$vm.filtering.context.sort.indexOf('+patternId') === -1 && $vm.filtering.context.sort.indexOf('-patternId') === -1" class="fa fa-sort"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('+patternId') === -1 && $vm.filtering.context.sort.indexOf('-patternId') === -1"
class="fa fa-sort"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('+patternId') !== -1" class="fa fa-caret-up"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('-patternId') !== -1" class="fa fa-caret-down"></i>
</a>
Expand All @@ -45,7 +49,8 @@ <h4>
<div class="ttp-date">
<a href class="text-default" ng-click="$vm.sortByField('occurDate')">
Occur Date
<i ng-show="$vm.filtering.context.sort.indexOf('+occurDate') === -1 && $vm.filtering.context.sort.indexOf('-occurDate') === -1" class="fa fa-sort"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('+occurDate') === -1 && $vm.filtering.context.sort.indexOf('-occurDate') === -1"
class="fa fa-sort"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('+occurDate') !== -1" class="fa fa-caret-up"></i>
<i ng-show="$vm.filtering.context.sort.indexOf('-occurDate') !== -1" class="fa fa-caret-down"></i>
</a>
Expand All @@ -55,29 +60,36 @@ <h4>

<div class="ttp-item" ng-repeat="proc in $vm.list.values">
<div class="ttp-header">
<div class="ttp-tactic clickable" ng-click="$vm.expanded[proc._id] = !$vm.expanded[proc._id]" style="border-color: {{$vm.tactics[proc.tactic].color}}">
<div class="ttp-tactic clickable" ng-click="$vm.expanded[proc._id] = !$vm.expanded[proc._id]"
style="border-color: {{$vm.tactics[proc.tactic].color}}">
<div>
<a class="mr-xxs">
<i class="fa" ng-class="{true: 'fa-chevron-up', false: 'fa-chevron-down'}[!!$vm.expanded[proc._id]]"></i>
<i class="fa"
ng-class="{true: 'fa-chevron-up', false: 'fa-chevron-down'}[!!$vm.expanded[proc._id]]"></i>
</a>

{{$vm.tactics[proc.tactic].label}}

<a href class="pull-right" ng-click="$vm.addFilterValue('tactic', proc.tactic)"><i class="fa fa-filter"></i></a>
<a href class="pull-right" ng-click="$vm.addFilterValue('tactic', proc.tactic)"><i
class="fa fa-filter"></i></a>
</div>
</div>
<div class="ttp-name" ng-if="proc.extraData.patternParent">
<div>
<a href ng-click="$vm.showPattern(proc.patternId)">{{proc.patternId}}</a> - {{proc.extraData.patternParent.name}}:{{proc.extraData.pattern.name}}
<a href ng-click="$vm.showPattern(proc.patternId)">{{proc.patternId}}</a> -
{{proc.extraData.patternParent.name}}:{{proc.extraData.pattern.name}}

<a href class="pull-right" ng-click="$vm.addFilterValue('patternId', proc.patternId)"><i class="fa fa-filter"></i></a>
<a href class="pull-right" ng-click="$vm.addFilterValue('patternId', proc.patternId)"><i
class="fa fa-filter"></i></a>
</div>
</div>
<div class="ttp-name" ng-if="!proc.extraData.patternParent">
<div>
<a href ng-click="$vm.showPattern(proc.patternId)">{{proc.patternId}}</a> - {{proc.extraData.pattern.name}}
<a href ng-click="$vm.showPattern(proc.patternId)">{{proc.patternId}}</a> -
{{proc.extraData.pattern.name}}

<a href class="pull-right" ng-click="$vm.addFilterValue('patternId', proc.patternId)"><i class="fa fa-filter"></i></a>
<a href class="pull-right" ng-click="$vm.addFilterValue('patternId', proc.patternId)"><i
class="fa fa-filter"></i></a>
</div>
</div>

Expand All @@ -86,11 +98,13 @@ <h4>
</div> -->
<div class="ttp-date">
<a href ng-click="$vm.addFilterValue('occurDate', proc.occurDate)">
<span uib-tooltip="{{proc.occurDate | shortDate}}" tooltip-popup-delay="500" tooltip-placement="bottom">{{proc.occurDate | shortDate}}</span>
<span uib-tooltip="{{proc.occurDate | shortDate}}" tooltip-popup-delay="500"
tooltip-placement="bottom">{{proc.occurDate | shortDate}}</span>
</a>
</div>
<div class="ttp-action">
<a class="btn btn-icon btn-clear text-danger" href ng-click="$vm.remove(proc)" uib-tooltip="Delete TTP" if-permission="manageCase" allowed="{{userPermissions}}">
<a class="btn btn-icon btn-clear text-danger" href ng-click="$vm.remove(proc)"
uib-tooltip="Delete TTP" if-permission="manageProcedure" allowed="{{userPermissions}}">
<i class="fa fa-trash"></i>
</a>
</div>
Expand All @@ -100,35 +114,44 @@ <h4>
<div class="col-sm-3">
<label>Created By</label>
<div>
<user-info value="proc._createdBy" field="organisation"></user-info>/<user-info value="proc._createdBy" field="name"></user-info>
<user-info value="proc._createdBy" field="organisation"></user-info>/<user-info
value="proc._createdBy" field="name"></user-info>
</div>
</div>
<div class="col-sm-3">
<label>Created At</label>
<div>
<span uib-tooltip="{{proc._createdAt | shortDate}}" tooltip-popup-delay="500" tooltip-placement="bottom">{{proc._createdAt | shortDate}}</span>
<span>{{proc._createdAt | shortDate}}</span>
</div>
</div>
<div class="col-sm-3">
<label>Updated At</label>
<div>
<span uib-tooltip="{{proc._updatedAt | shortDate}}" tooltip-popup-delay="500" tooltip-placement="bottom">{{(proc._updatedAt | shortDate) || '-'}}</span>
<span>{{(proc._updatedAt | shortDate) || '-'}}</span>
</div>
</div>
<div class="col-sm-3">
<label>Occured At</label>
<div>
<updatable-date on-update="$vm.updateField(proc, 'occurDate', true)" value="proc.occurDate" clearable="false"></updatable-date>
<div if-permission="manageProcedure" allowed="{{userPermissions}}">
<updatable-date on-update="$vm.updateField(proc, 'occurDate', true)" value="proc.occurDate"
clearable="false"></updatable-date>
</div>
<div class="description-pane" if-not-permission="manageProcedure" allowed="{{userPermissions}}">
<span>{{(proc.occurDate | shortDate) || '-'}}</span>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12">
<label>Procedure</label>
<div class="description-pane" if-permission="manageCase" allowed="{{userPermissions}}">
<updatable-text on-update="$vm.updateField(proc, 'description')" value="proc.description"></updatable-text>
<div class="description-pane" if-permission="manageProcedure" allowed="{{userPermissions}}">
<updatable-text on-update="$vm.updateField(proc, 'description')" value="proc.description">
</updatable-text>
</div>
<div class="description-pane" if-not-permission="manageCase" allowed="{{userPermissions}}">
<div class="description-pane" if-not-permission="manageProcedure" allowed="{{userPermissions}}">
<div ng-if="!proc.description">
<em class="text-warning">Not Specified</em>
</div>
<div marked="proc.description" class="markdown"></div>
</div>
</div>
Expand Down
6 changes: 4 additions & 2 deletions frontend/app/views/partials/case/procedures/toolbar.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<div class="col-md-12">
<div class="btn-toolbar" role="toolbar">

<div class="btn-group" if-permission="manageCase" allowed="{{userPermissions}}">
<div class="btn-group" if-permission="manageProcedure" allowed="{{userPermissions}}">
<button class="btn btn-sm btn-primary" ng-click="$vm.addProcedure()">
<i class="glyphicon glyphicon-plus"></i>
Add TTP
Expand Down Expand Up @@ -36,7 +36,9 @@
</div>

<div class="btn-group pull-right" role="group">
<button class="btn btn-sm" ng-class="{true: 'btn-primary', false:'btn-default'}[$vm.filtering.context.showFilters]" type="button" ng-click="$vm.toggleFilters()">
<button class="btn btn-sm"
ng-class="{true: 'btn-primary', false:'btn-default'}[$vm.filtering.context.showFilters]"
type="button" ng-click="$vm.toggleFilters()">
<i class="fa fa-search"></i> Filters
</button>
</div>
Expand Down

0 comments on commit 6475b86

Please sign in to comment.