Files
SGF/scripts/sgf-hr-personnel-privacy.php
2026-11-11 15:04:01 +02:00

8 lines
2.3 KiB
PHP

<?php
require __DIR__.'/sgf-hr-personnel-proof-bootstrap.php';$cuts=json_decode(file_get_contents($s['root'].'/hp-concurrency-1794380380400/cuts.json'),true);$before=$host->table('hp_versions')->count();$host->beginTransaction();try{
$foreign=$host->table('units')->where(['tenant_id'=>1,'company_id'=>2])->where('id','<>',2)->value('id');if(!$foreign)throw new LogicException('Existing other unit required');$r=(array)$host->table('hp_versions')->where('kind','contract')->first();unset($r['id']);$r['previous_id']=null;$r['version']=1;$r['record_key']=$uuid();$r['unit_id']=$foreign;$host->table('hp_versions')->insert($r);$visible=$hpList('contract',['worker_key'=>$workerKey]);$ok($visible['records']['total']===1,'foreign unit filtered before count');$reject(fn()=>$hpList('contract',['record_key'=>$r['record_key']]),403,'other unit history refused');$select(17);$id=$host->table('hp_versions')->where('record_key',$r['record_key'])->value('id');$reject(fn()=>$hp->export($hrActor(17),$id),403,'other unit export refused');$reject(fn()=>$hpList('contract',['per_page'=>26]),422,'page size whitelist enforced');$reject(fn()=>$hpList('contract',['worker_key'=>$uuid()]),409,'unavailable employee cannot be selected');
$host->beginTransaction();try{$host->table('permission_grants')->where(['user_id'=>$hrActor(13),'permission'=>'human_resources.leave.prepare'])->delete();$reject(fn()=>$hpPreview(14,$hpInput('leave',$cuts['b_key'],1,['decision'=>'approved'],'review')),403,'current preparer right revalidated on review');}finally{$host->rollBack();}
$host->beginTransaction();try{$host->table('permission_grants')->where(['user_id'=>$hrActor(17),'permission'=>'human_resources.attendance.view'])->delete();$reject(fn()=>$hpList('day'),403,'revoked view blocks read immediately');}finally{$host->rollBack();}
$select(17);$reject(fn()=>$hp->receipt($hrActor(17),$uuid()),404,'other or unknown technical receipt unavailable');
}finally{$host->rollBack();}$ok($host->table('hp_versions')->count()===$before,'foreign fixtures and rights changes rolled back');file_put_contents($work.'/hp-privacy.json',json_encode(['passed'=>true,'checks'=>$checks,'fixtures_rolled_back'=>true,'regression_only'=>true],JSON_PRETTY_PRINT));echo json_encode(['passed'=>true,'checks'=>count($checks),'proof'=>$work.'/hp-privacy.json']).PHP_EOL;