new: [userSettings] New setting `default_restsearch_parameters`

It allows users to supply restSearch parameters that will be injected
(and possibly overridden) into the restSearch filters.
pull/5967/head
mokaddem 2020-05-29 15:23:27 +02:00
parent 591bd8f9c5
commit bb167029eb
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
4 changed files with 47 additions and 1 deletions

View File

@ -4477,6 +4477,7 @@ class Attribute extends AppModel
$subqueryElements = $this->Event->harvestSubqueryElements($filters);
$filters = $this->Event->addFiltersFromSubqueryElements($filters, $subqueryElements);
$filters = $this->Event->addFiltersFromUserSettings($user, $filters);
$conditions = $this->buildFilterConditions($user, $filters);
$params = array(
'conditions' => $conditions,

View File

@ -6690,6 +6690,7 @@ class Event extends AppModel
$subqueryElements = $this->harvestSubqueryElements($filters);
$filters = $this->addFiltersFromSubqueryElements($filters, $subqueryElements);
$filters = $this->addFiltersFromUserSettings($user, $filters);
if (empty($exportTool->mock_query_only)) {
$filters['include_attribute_count'] = 1;
@ -6969,6 +6970,14 @@ class Event extends AppModel
return $filters;
}
public function addFiltersFromUserSettings($user, $filters)
{
$this->UserSetting = ClassRegistry::init('UserSetting');
$defaultParameters = $this->UserSetting->getDefaulRestSearchParameters($user);
$filters = array_replace_recursive($defaultParameters, $filters);
return $filters;
}
/**
* @param array $event
*/

View File

@ -1337,6 +1337,7 @@ class MispObject extends AppModel
}
$subqueryElements = $this->Event->harvestSubqueryElements($filters);
$filters = $this->Event->addFiltersFromSubqueryElements($filters, $subqueryElements);
$filters = $this->Event->addFiltersFromUserSettings($user, $filters);
$conditions = $this->buildFilterConditions($user, $filters);
$params = array(
'conditions' => $conditions,

View File

@ -67,7 +67,26 @@ class UserSetting extends AppModel
),
'homepage' => array(
'path' => '/events/index'
)
),
'default_restsearch_parameters' => array(
'placeholder' => array(
'AND' => array(
'NOT' => array(
'EventTag.name' => array(
'%osint%'
)
),
'OR' => array(
'Tag.name' => array(
'tlp:green',
'tlp:amber',
'tlp:red',
'%privint%'
)
)
)
)
),
);
// massage the data before we send it off for validation before saving anything
@ -175,6 +194,22 @@ class UserSetting extends AppModel
return false;
}
public function getDefaulRestSearchParameters($user)
{
$setting = $this->find('first', array(
'recursive' => -1,
'conditions' => array(
'UserSetting.user_id' => $user['id'],
'UserSetting.setting' => 'default_restsearch_parameters'
)
));
$parameters = array();
if (!empty($setting)) {
$parameters = $setting['UserSetting']['value'];
}
return $parameters;
}
/*
* Check whether the event is something the user is interested (to be alerted on)
*