mirror of https://github.com/MISP/MISP
commit
c6183dbb98
|
@ -790,7 +790,7 @@ class AttributesController extends AppController
|
|||
}
|
||||
}
|
||||
if ($existingAttribute['Attribute']['object_id']) {
|
||||
$result = $this->Attribute->save($this->request->data, array('fieldList' => $this->Attribute->editableFields));
|
||||
$result = $this->Attribute->save($this->request->data, array('fieldList' => Attribute::EDITABLE_FIELDS));
|
||||
if ($result) {
|
||||
$this->Attribute->AttributeTag->handleAttributeTags($this->Auth->user(), $this->request->data['Attribute'], $attribute['Event']['id'], $capture=true);
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ App::uses('Model', 'Model');
|
|||
App::uses('LogableBehavior', 'Assets.models/behaviors');
|
||||
App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth');
|
||||
App::uses('RandomTool', 'Tools');
|
||||
|
||||
class AppModel extends Model
|
||||
{
|
||||
public $name;
|
||||
|
@ -33,13 +34,8 @@ class AppModel extends Model
|
|||
*/
|
||||
private $loadedPubSubTool;
|
||||
|
||||
public $loadedKafkaPubTool = false;
|
||||
|
||||
public $start = 0;
|
||||
|
||||
public $assetCache = [];
|
||||
|
||||
public $inserted_ids = array();
|
||||
/** @var KafkaPubTool */
|
||||
public $loadedKafkaPubTool;
|
||||
|
||||
/** @var null|Redis */
|
||||
private static $__redisConnection = null;
|
||||
|
@ -61,7 +57,7 @@ class AppModel extends Model
|
|||
|
||||
// deprecated, use $db_changes
|
||||
// major -> minor -> hotfix -> requires_logout
|
||||
public $old_db_changes = array(
|
||||
const OLD_DB_CHANGES = array(
|
||||
2 => array(
|
||||
4 => array(
|
||||
18 => false, 19 => false, 20 => false, 25 => false, 27 => false,
|
||||
|
@ -78,7 +74,7 @@ class AppModel extends Model
|
|||
)
|
||||
);
|
||||
|
||||
public $db_changes = array(
|
||||
const DB_CHANGES = array(
|
||||
1 => false, 2 => false, 3 => false, 4 => true, 5 => false, 6 => false,
|
||||
7 => false, 8 => false, 9 => false, 10 => false, 11 => false, 12 => false,
|
||||
13 => false, 14 => false, 15 => false, 18 => false, 19 => false, 20 => false,
|
||||
|
@ -107,14 +103,6 @@ class AppModel extends Model
|
|||
),
|
||||
);
|
||||
|
||||
public function afterSave($created, $options = array())
|
||||
{
|
||||
if ($created) {
|
||||
$this->inserted_ids[] = $this->getInsertID();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function isAcceptedDatabaseError($errorMessage, $dataSource)
|
||||
{
|
||||
$isAccepted = false;
|
||||
|
@ -2375,12 +2363,12 @@ class AppModel extends Model
|
|||
}
|
||||
}
|
||||
|
||||
public function findUpgrades($db_version)
|
||||
protected function findUpgrades($db_version)
|
||||
{
|
||||
$updates = array();
|
||||
if (strpos($db_version, '.')) {
|
||||
$version = explode('.', $db_version);
|
||||
foreach ($this->old_db_changes as $major => $rest) {
|
||||
foreach (self::OLD_DB_CHANGES as $major => $rest) {
|
||||
if ($major < $version[0]) {
|
||||
continue;
|
||||
} elseif ($major == $version[0]) {
|
||||
|
@ -2403,7 +2391,7 @@ class AppModel extends Model
|
|||
}
|
||||
$db_version = 0;
|
||||
}
|
||||
foreach ($this->db_changes as $db_change => $requiresLogout) {
|
||||
foreach (self::DB_CHANGES as $db_change => $requiresLogout) {
|
||||
if ($db_version < $db_change) {
|
||||
$updates[$db_change] = $requiresLogout;
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ App::uses('ComplexTypeTool', 'Tools');
|
|||
* @property Event $Event
|
||||
* @property AttributeTag $AttributeTag
|
||||
* @property Sighting $Sighting
|
||||
* @property MispObject $Object
|
||||
* @property-read array $typeDefinitions
|
||||
* @property-read array $categoryDefinitions
|
||||
*/
|
||||
|
@ -45,11 +46,21 @@ class Attribute extends AppModel
|
|||
'distribution' => array('desc' => 'Describes who will have access to the attribute.')
|
||||
);
|
||||
|
||||
public $defaultFields = array(
|
||||
'id', 'event_id', 'object_id', 'object_relation', 'category', 'type', 'value', 'to_ids', 'uuid', 'timestamp', 'distribution', 'sharing_group_id', 'comment', 'deleted', 'disable_correlation', 'first_seen', 'last_seen'
|
||||
);
|
||||
|
||||
public $editableFields = array('timestamp', 'category', 'value', 'value1', 'value2', 'to_ids', 'comment', 'distribution', 'sharing_group_id', 'deleted', 'disable_correlation', 'first_seen', 'last_seen');
|
||||
const EDITABLE_FIELDS = [
|
||||
'timestamp',
|
||||
'category',
|
||||
'value',
|
||||
'value1',
|
||||
'value2',
|
||||
'to_ids',
|
||||
'comment',
|
||||
'distribution',
|
||||
'sharing_group_id',
|
||||
'deleted',
|
||||
'disable_correlation',
|
||||
'first_seen',
|
||||
'last_seen',
|
||||
];
|
||||
|
||||
public $distributionDescriptions = array(
|
||||
0 => array('desc' => 'This field determines the current distribution of the event', 'formdesc' => "This setting will only allow members of your organisation on this server to see it."),
|
||||
|
@ -3789,7 +3800,7 @@ class Attribute extends AppModel
|
|||
$attribute['distribution'] = 5;
|
||||
}
|
||||
}
|
||||
$fieldList = $this->editableFields;
|
||||
$fieldList = self::EDITABLE_FIELDS;
|
||||
if (empty($existingAttribute)) {
|
||||
$addableFieldList = array('event_id', 'type', 'uuid');
|
||||
$fieldList = array_merge($fieldList, $addableFieldList);
|
||||
|
@ -3857,12 +3868,8 @@ class Attribute extends AppModel
|
|||
return true;
|
||||
}
|
||||
|
||||
public function deleteAttribute($id, $user, $hard = false)
|
||||
public function deleteAttribute($id, array $user, $hard = false)
|
||||
{
|
||||
$this->id = $id;
|
||||
if (!$this->exists()) {
|
||||
return false;
|
||||
}
|
||||
$result = $this->fetchAttributes($user, array(
|
||||
'conditions' => array('Attribute.id' => $id),
|
||||
'flatten' => 1,
|
||||
|
@ -3887,7 +3894,6 @@ class Attribute extends AppModel
|
|||
}
|
||||
}
|
||||
}
|
||||
$date = new DateTime();
|
||||
if ($hard) {
|
||||
$save = $this->delete($id);
|
||||
} else {
|
||||
|
@ -3899,7 +3905,7 @@ class Attribute extends AppModel
|
|||
$result['Attribute']['to_ids'] = 0;
|
||||
}
|
||||
$result['Attribute']['deleted'] = 1;
|
||||
$result['Attribute']['timestamp'] = $date->getTimestamp();
|
||||
$result['Attribute']['timestamp'] = time();
|
||||
$save = $this->save($result);
|
||||
$object_refs = $this->Object->ObjectReference->find('all', array(
|
||||
'conditions' => array(
|
||||
|
|
|
@ -376,6 +376,8 @@ class Event extends AppModel
|
|||
);
|
||||
}
|
||||
|
||||
private $assetCache = [];
|
||||
|
||||
public function beforeDelete($cascade = true)
|
||||
{
|
||||
// blocklist the event UUID if the feature is enabled
|
||||
|
|
|
@ -884,7 +884,7 @@ class MispObject extends AppModel
|
|||
$newAttribute['event_id'] = $object['Object']['event_id'];
|
||||
$newAttribute['object_id'] = $object['Object']['id'];
|
||||
$newAttribute['timestamp'] = $date->getTimestamp();
|
||||
$result = $this->Event->Attribute->save(array('Attribute' => $newAttribute), array('fieldList' => $this->Attribute->editableFields));
|
||||
$result = $this->Event->Attribute->save(array('Attribute' => $newAttribute), array('fieldList' => Attribute::EDITABLE_FIELDS));
|
||||
if ($result) {
|
||||
$this->Event->Attribute->AttributeTag->handleAttributeTags($user, $newAttribute, $newAttribute['event_id'], $capture=true);
|
||||
}
|
||||
|
@ -926,7 +926,7 @@ class MispObject extends AppModel
|
|||
}
|
||||
foreach ($object['Attribute'] as $origKey => $originalAttribute) {
|
||||
$originalAttribute['deleted'] = 1;
|
||||
$this->Event->Attribute->save($originalAttribute, array('fieldList' => $this->Attribute->editableFields));
|
||||
$this->Event->Attribute->save($originalAttribute, array('fieldList' => Attribute::EDITABLE_FIELDS));
|
||||
}
|
||||
}
|
||||
} else { // we only add the new attribute
|
||||
|
|
Loading…
Reference in New Issue