mirror of
https://github.com/vitodeploy/vito.git
synced 2025-04-19 18:01:37 +00:00
Add API endpoint to update site aliases (#551)
This commit is contained in:
parent
f89e7af34e
commit
03be2d3ee2
@ -3,6 +3,7 @@
|
|||||||
namespace App\Http\Controllers\API;
|
namespace App\Http\Controllers\API;
|
||||||
|
|
||||||
use App\Actions\Site\CreateSite;
|
use App\Actions\Site\CreateSite;
|
||||||
|
use App\Actions\Site\UpdateAliases;
|
||||||
use App\Actions\Site\UpdateLoadBalancer;
|
use App\Actions\Site\UpdateLoadBalancer;
|
||||||
use App\Enums\LoadBalancerMethod;
|
use App\Enums\LoadBalancerMethod;
|
||||||
use App\Enums\SiteType;
|
use App\Enums\SiteType;
|
||||||
@ -23,6 +24,7 @@
|
|||||||
use Spatie\RouteAttributes\Attributes\Middleware;
|
use Spatie\RouteAttributes\Attributes\Middleware;
|
||||||
use Spatie\RouteAttributes\Attributes\Post;
|
use Spatie\RouteAttributes\Attributes\Post;
|
||||||
use Spatie\RouteAttributes\Attributes\Prefix;
|
use Spatie\RouteAttributes\Attributes\Prefix;
|
||||||
|
use Spatie\RouteAttributes\Attributes\Put;
|
||||||
|
|
||||||
#[Prefix('api/projects/{project}/servers/{server}/sites')]
|
#[Prefix('api/projects/{project}/servers/{server}/sites')]
|
||||||
#[Middleware(['auth:sanctum', 'can-see-project'])]
|
#[Middleware(['auth:sanctum', 'can-see-project'])]
|
||||||
@ -113,6 +115,23 @@ public function updateLoadBalancer(Request $request, Project $project, Server $s
|
|||||||
return new SiteResource($site);
|
return new SiteResource($site);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[Put('{site}/aliases', name: 'api.projects.servers.sites.aliases', middleware: 'ability:write')]
|
||||||
|
#[Endpoint(title: 'aliases', description: 'Update aliases.')]
|
||||||
|
#[BodyParam(name: 'aliases', type: 'array', description: 'Array of aliases')]
|
||||||
|
#[Response(status: 200)]
|
||||||
|
public function updateAliases(Request $request, Project $project, Server $server, Site $site): SiteResource
|
||||||
|
{
|
||||||
|
$this->authorize('update', [$site, $server]);
|
||||||
|
|
||||||
|
$this->validateRoute($project, $server, $site);
|
||||||
|
|
||||||
|
$this->validate($request, UpdateAliases::rules());
|
||||||
|
|
||||||
|
app(UpdateAliases::class)->update($site, $request->all());
|
||||||
|
|
||||||
|
return new SiteResource($site);
|
||||||
|
}
|
||||||
|
|
||||||
private function validateRoute(Project $project, Server $server, ?Site $site = null): void
|
private function validateRoute(Project $project, Server $server, ?Site $site = null): void
|
||||||
{
|
{
|
||||||
if ($project->id !== $server->project_id) {
|
if ($project->id !== $server->project_id) {
|
||||||
|
@ -118,6 +118,30 @@ public function test_delete_site(): void
|
|||||||
->assertNoContent();
|
->assertNoContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_update_aliases(): void
|
||||||
|
{
|
||||||
|
SSH::fake();
|
||||||
|
|
||||||
|
Sanctum::actingAs($this->user, ['read', 'write']);
|
||||||
|
|
||||||
|
/** @var Site $site */
|
||||||
|
$site = Site::factory()->create([
|
||||||
|
'server_id' => $this->server->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->json('PUT', route('api.projects.servers.sites.aliases', [
|
||||||
|
'project' => $this->server->project,
|
||||||
|
'server' => $this->server,
|
||||||
|
'site' => $site,
|
||||||
|
]), [
|
||||||
|
'aliases' => ['example.com', 'example.net'],
|
||||||
|
])
|
||||||
|
->assertSuccessful()
|
||||||
|
->assertJsonFragment([
|
||||||
|
'aliases' => ['example.com', 'example.net'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
public function test_update_load_balancer(): void
|
public function test_update_load_balancer(): void
|
||||||
{
|
{
|
||||||
SSH::fake();
|
SSH::fake();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user