42 lines
1.4 KiB
PHP
42 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Actions\FirewallRules\UninstallFirewallRule;
|
|
use App\Http\Requests\StoreServerFirewallRuleRequest;
|
|
use App\Models\FirewallRule;
|
|
use App\Models\Organisation;
|
|
use App\Models\Server;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class ServerFirewallRuleController extends Controller
|
|
{
|
|
public function store(StoreServerFirewallRuleRequest $request, Organisation $organisation, Server $server): RedirectResponse
|
|
{
|
|
abort_unless((int) $server->organisation_id === (int) $organisation->id, 404);
|
|
|
|
$server->firewallRules()->create($request->validated());
|
|
|
|
return redirect()
|
|
->route('servers.show', [$organisation, $server])
|
|
->with('success', 'Firewall rule queued for installation.');
|
|
}
|
|
|
|
public function destroy(Request $request, Organisation $organisation, Server $server, FirewallRule $firewallRule, UninstallFirewallRule $uninstallFirewallRule): RedirectResponse
|
|
{
|
|
abort_unless(
|
|
(int) $server->organisation_id === (int) $organisation->id
|
|
&& (int) $firewallRule->server_id === (int) $server->id,
|
|
404,
|
|
);
|
|
|
|
$uninstallFirewallRule->execute($firewallRule);
|
|
$firewallRule->delete();
|
|
|
|
return redirect()
|
|
->route('servers.show', [$organisation, $server])
|
|
->with('success', 'Firewall rule removed.');
|
|
}
|
|
}
|