Skip to content

Commit c8133bd

Browse files
Fix no audit if Field->never_persist = true (#30)
* Fix no audit if Field->never_persist = true * Apply fixes from StyleCI * Add ignore of never_save & read_only + Test Co-authored-by: Imants Horsts <imants.horsts@inbox.lv>
1 parent 702427b commit c8133bd

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/Controller.php

+5
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,11 @@ public function getDiffs(Model $m)
272272
continue;
273273
}
274274

275+
// security fix : https://github.com/atk4/audit/pull/30
276+
if ($f->never_persist || $f->never_save || $f->read_only) {
277+
continue;
278+
}
279+
275280
// don't log DSQL expressions because they can be recursive and we can't store them
276281
if ($original instanceof Expression || $m[$key] instanceof Expression) {
277282
continue;

tests/FieldTypeTest.php

+15
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public function init(): void
3030
$this->addField('f_ser_json', ['type' => 'array', 'serialize' => 'json']);
3131
$this->addField('f_ser_ser', ['type' => 'array', 'serialize' => 'serialize']);
3232

33+
// security test - never show in changes
34+
$this->addField('f_security_never_persist', ['never_persist' => true]);
35+
$this->addField('f_security_never_save', ['never_save' => true]);
36+
$this->addField('f_security_read_only', ['read_only' => true]);
37+
3338
$this->add(new \atk4\audit\Controller());
3439
}
3540
}
@@ -83,6 +88,9 @@ public function testFieldTypes()
8388
'f_enum' => 'M',
8489
'f_ser_json' => json_encode([789,'qwe'=>'asd']),
8590
'f_ser_ser' => serialize([789,'qwe'=>'asd']),
91+
'f_security_never_persist' => 'never persist',
92+
'f_security_never_save' => 'never save',
93+
'f_security_read_only' => 'read only',
8694
],
8795
],
8896
'audit_log' => $this->audit_db,
@@ -108,6 +116,9 @@ public function testFieldTypes()
108116
'f_enum' => 'F',
109117
'f_ser_json' => [987,'qwe'=>'zxc'],
110118
'f_ser_ser' => [987,'qwe'=>'zxc'],
119+
'f_security_never_persist' => 'change never persist',
120+
'f_security_never_save' => 'change never save',
121+
//'f_security_read_only' => 'change read only', trigger error on change before
111122
]);
112123
$m->save();
113124

@@ -128,5 +139,9 @@ public function testFieldTypes()
128139
$this->assertTrue(is_int(strpos($l['descr'], 'f_enum=')));
129140
$this->assertTrue(is_int(strpos($l['descr'], 'f_ser_json=')));
130141
$this->assertTrue(is_int(strpos($l['descr'], 'f_ser_ser=')));
142+
143+
$this->assertFalse(strpos($l['descr'], 'f_security_never_persist='));
144+
$this->assertFalse(strpos($l['descr'], 'f_security_never_save='));
145+
$this->assertFalse(strpos($l['descr'], 'f_security_read_only='));
131146
}
132147
}

0 commit comments

Comments
 (0)