Upgrade framework
This commit is contained in:
52
vendor/spatie/laravel-ignition/src/Http/Controllers/ExecuteSolutionController.php
vendored
Normal file
52
vendor/spatie/laravel-ignition/src/Http/Controllers/ExecuteSolutionController.php
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace Spatie\LaravelIgnition\Http\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Spatie\Ignition\Contracts\SolutionProviderRepository;
|
||||
use Spatie\LaravelIgnition\Exceptions\CannotExecuteSolutionForNonLocalIp;
|
||||
use Spatie\LaravelIgnition\Http\Requests\ExecuteSolutionRequest;
|
||||
use Spatie\LaravelIgnition\Support\RunnableSolutionsGuard;
|
||||
|
||||
class ExecuteSolutionController
|
||||
{
|
||||
use ValidatesRequests;
|
||||
|
||||
public function __invoke(
|
||||
ExecuteSolutionRequest $request,
|
||||
SolutionProviderRepository $solutionProviderRepository
|
||||
) {
|
||||
$this
|
||||
->ensureRunnableSolutionsEnabled()
|
||||
->ensureLocalRequest();
|
||||
|
||||
$solution = $request->getRunnableSolution();
|
||||
|
||||
$solution->run($request->get('parameters', []));
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
|
||||
public function ensureRunnableSolutionsEnabled(): self
|
||||
{
|
||||
// Should already be checked in middleware but we want to be 100% certain.
|
||||
abort_unless(RunnableSolutionsGuard::check(), 400);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function ensureLocalRequest(): self
|
||||
{
|
||||
$ipIsPublic = filter_var(
|
||||
request()->ip(),
|
||||
FILTER_VALIDATE_IP,
|
||||
FILTER_FLAG_IPV4 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE
|
||||
);
|
||||
|
||||
if ($ipIsPublic) {
|
||||
throw CannotExecuteSolutionForNonLocalIp::make();
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
25
vendor/spatie/laravel-ignition/src/Http/Controllers/HealthCheckController.php
vendored
Normal file
25
vendor/spatie/laravel-ignition/src/Http/Controllers/HealthCheckController.php
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace Spatie\LaravelIgnition\Http\Controllers;
|
||||
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class HealthCheckController
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
return [
|
||||
'can_execute_commands' => $this->canExecuteCommands(),
|
||||
];
|
||||
}
|
||||
|
||||
protected function canExecuteCommands(): bool
|
||||
{
|
||||
Artisan::call('help', ['--version']);
|
||||
|
||||
$output = Artisan::output();
|
||||
|
||||
return Str::contains($output, app()->version());
|
||||
}
|
||||
}
|
||||
16
vendor/spatie/laravel-ignition/src/Http/Controllers/UpdateConfigController.php
vendored
Normal file
16
vendor/spatie/laravel-ignition/src/Http/Controllers/UpdateConfigController.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace Spatie\LaravelIgnition\Http\Controllers;
|
||||
|
||||
use Spatie\Ignition\Config\IgnitionConfig;
|
||||
use Spatie\LaravelIgnition\Http\Requests\UpdateConfigRequest;
|
||||
|
||||
class UpdateConfigController
|
||||
{
|
||||
public function __invoke(UpdateConfigRequest $request)
|
||||
{
|
||||
$result = (new IgnitionConfig())->saveValues($request->validated());
|
||||
|
||||
return response()->json($result);
|
||||
}
|
||||
}
|
||||
18
vendor/spatie/laravel-ignition/src/Http/Middleware/RunnableSolutionsEnabled.php
vendored
Normal file
18
vendor/spatie/laravel-ignition/src/Http/Middleware/RunnableSolutionsEnabled.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace Spatie\LaravelIgnition\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Spatie\LaravelIgnition\Support\RunnableSolutionsGuard;
|
||||
|
||||
class RunnableSolutionsEnabled
|
||||
{
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (! RunnableSolutionsGuard::check()) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
40
vendor/spatie/laravel-ignition/src/Http/Requests/ExecuteSolutionRequest.php
vendored
Normal file
40
vendor/spatie/laravel-ignition/src/Http/Requests/ExecuteSolutionRequest.php
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
namespace Spatie\LaravelIgnition\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Spatie\Ignition\Contracts\RunnableSolution;
|
||||
use Spatie\Ignition\Contracts\Solution;
|
||||
use Spatie\Ignition\Contracts\SolutionProviderRepository;
|
||||
|
||||
class ExecuteSolutionRequest extends FormRequest
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'solution' => 'required',
|
||||
'parameters' => 'array',
|
||||
];
|
||||
}
|
||||
|
||||
public function getSolution(): Solution
|
||||
{
|
||||
$solution = app(SolutionProviderRepository::class)
|
||||
->getSolutionForClass($this->get('solution'));
|
||||
|
||||
abort_if(is_null($solution), 404, 'Solution could not be found');
|
||||
|
||||
return $solution;
|
||||
}
|
||||
|
||||
public function getRunnableSolution(): RunnableSolution
|
||||
{
|
||||
$solution = $this->getSolution();
|
||||
|
||||
if (! $solution instanceof RunnableSolution) {
|
||||
abort(404, 'Runnable solution could not be found');
|
||||
}
|
||||
|
||||
return $solution;
|
||||
}
|
||||
}
|
||||
18
vendor/spatie/laravel-ignition/src/Http/Requests/UpdateConfigRequest.php
vendored
Normal file
18
vendor/spatie/laravel-ignition/src/Http/Requests/UpdateConfigRequest.php
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace Spatie\LaravelIgnition\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Validation\Rule;
|
||||
|
||||
class UpdateConfigRequest extends FormRequest
|
||||
{
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'theme' => ['required', Rule::in(['light', 'dark', 'auto'])],
|
||||
'editor' => ['required'],
|
||||
'hide_solutions' => ['required', 'boolean'],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user