mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-01 14:06:15 +00:00
Add endpoint for reading and updating site .env file (#564)
* feat(api): Add endpoint for reading site .env file - Add GET /api/projects/{project}/servers/{server}/sites/{site}/env endpoint - Add feature tests with SSH mocking * added updating env * fix coding style * generate docs --------- Co-authored-by: Saeed Vaziry <mr.saeedvaziry@gmail.com>
This commit is contained in:
@ -6,6 +6,7 @@
|
||||
use App\Actions\Site\Deploy;
|
||||
use App\Actions\Site\UpdateAliases;
|
||||
use App\Actions\Site\UpdateDeploymentScript;
|
||||
use App\Actions\Site\UpdateEnv;
|
||||
use App\Actions\Site\UpdateLoadBalancer;
|
||||
use App\Enums\LoadBalancerMethod;
|
||||
use App\Enums\SiteType;
|
||||
@ -184,6 +185,45 @@ public function showDeploymentScript(Project $project, Server $server, Site $sit
|
||||
]);
|
||||
}
|
||||
|
||||
#[Get('{site}/env', name: 'api.projects.servers.sites.env.show', middleware: 'ability:read')]
|
||||
#[Endpoint(title: 'env', description: 'Get site .env file content')]
|
||||
#[Response(content: [
|
||||
'data' => [
|
||||
'env' => 'APP_NAME=Laravel\nAPP_ENV=production',
|
||||
],
|
||||
], status: 200)]
|
||||
public function showEnv(Project $project, Server $server, Site $site): \Illuminate\Http\JsonResponse
|
||||
{
|
||||
$this->authorize('view', [$site, $server]);
|
||||
|
||||
$this->validateRoute($project, $server, $site);
|
||||
|
||||
return response()->json([
|
||||
'data' => [
|
||||
'env' => $site->getEnv(),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
#[Put('{site}/env', name: 'api.projects.servers.sites.env', middleware: 'ability:write')]
|
||||
#[Endpoint(title: 'env', description: 'Update site .env file')]
|
||||
#[BodyParam(name: 'env', type: 'string', description: 'Content of the .env file')]
|
||||
#[Response(status: 200)]
|
||||
public function updateEnv(Request $request, Project $project, Server $server, Site $site): SiteResource
|
||||
{
|
||||
$this->authorize('update', [$site, $server]);
|
||||
|
||||
$this->validateRoute($project, $server, $site);
|
||||
|
||||
$this->validate($request, [
|
||||
'env' => ['required', 'string'],
|
||||
]);
|
||||
|
||||
app(UpdateEnv::class)->update($site, $request->all());
|
||||
|
||||
return new SiteResource($site);
|
||||
}
|
||||
|
||||
private function validateRoute(Project $project, Server $server, ?Site $site = null): void
|
||||
{
|
||||
if ($project->id !== $server->project_id) {
|
||||
|
Reference in New Issue
Block a user