Skip to content

Commit 2563953

Browse files
committed
fix: Use loadPolicyArray instead of loadPolicyLine to fix the problem of quotation marks
1 parent d32690d commit 2563953

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/Adapter.php

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,10 +151,7 @@ public function loadPolicy(Model $model): void
151151
$stmt = $queryBuilder->select('p_type', 'v0', 'v1', 'v2', 'v3', 'v4', 'v5')->from($this->policyTableName)->execute();
152152

153153
while ($row = $this->fetch($stmt)) {
154-
$line = implode(', ', array_filter($row, function ($val) {
155-
return '' != $val && !is_null($val);
156-
}));
157-
$this->loadPolicyLine(trim($line), $model);
154+
$this->loadPolicyArray($this->filterRule($row), $model);
158155
}
159156
}
160157

@@ -437,11 +434,16 @@ public function updateFilteredPolicies(string $sec, string $ptype, array $newRul
437434
*/
438435
public function filterRule(array $rule): array
439436
{
440-
$rule = array_filter($rule, function ($val) {
441-
return '' != $val && !is_null($val);
442-
});
437+
$rule = array_values($rule);
438+
439+
$i = count($rule) - 1;
440+
for (; $i >= 0; $i--) {
441+
if ($rule[$i] != "" && !is_null($rule[$i])) {
442+
break;
443+
}
444+
}
443445

444-
return array_values($rule);
446+
return array_slice($rule, 0, $i + 1);
445447
}
446448

447449
/**

0 commit comments

Comments
 (0)