feat(firewall): add audited configuration management
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -10,11 +10,13 @@ use KTXC\Context\TenantContextInterface;
|
||||
final class TenantFirewallStatusService
|
||||
{
|
||||
public const PERMISSION_SETTINGS_READ = 'firewall.tenant.settings.read';
|
||||
public const PERMISSION_SETTINGS_MANAGE = 'firewall.tenant.settings.manage';
|
||||
|
||||
public function __construct(
|
||||
private readonly FirewallStatusService $status,
|
||||
private readonly TenantContextInterface $tenant,
|
||||
private readonly IdentityContextInterface $identity,
|
||||
private readonly FirewallSettingsService $settings,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -36,6 +38,25 @@ final class TenantFirewallStatusService
|
||||
];
|
||||
}
|
||||
|
||||
public function updateConfiguration(
|
||||
bool $enabled,
|
||||
int $maxAuthFailures,
|
||||
int $authFailureWindow,
|
||||
int $autoBlockDuration,
|
||||
string $reason
|
||||
): ?array {
|
||||
$this->requirePermission(self::PERMISSION_SETTINGS_MANAGE);
|
||||
return $this->settings->update(
|
||||
$this->tenant->requireIdentifier(),
|
||||
$enabled,
|
||||
$maxAuthFailures,
|
||||
$authFailureWindow,
|
||||
$autoBlockDuration,
|
||||
$reason,
|
||||
$this->identity->identifier()
|
||||
);
|
||||
}
|
||||
|
||||
private function requirePermission(string $permission): void
|
||||
{
|
||||
if (!$this->identity->hasPermission($permission)) {
|
||||
|
||||
Reference in New Issue
Block a user