mirror of
https://github.com/flarum/core.git
synced 2025-08-04 23:47:32 +02:00
fix(em): composer.json
schema issues
This commit is contained in:
22
extensions/package-manager/src/AllValidatorRules.php
Normal file
22
extensions/package-manager/src/AllValidatorRules.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace Flarum\ExtensionManager;
|
||||
|
||||
/**
|
||||
* @todo: fix in 2.0
|
||||
*/
|
||||
trait AllValidatorRules
|
||||
{
|
||||
protected function makeValidator(array $attributes)
|
||||
{
|
||||
$rules = $this->getRules();
|
||||
|
||||
$validator = $this->validator->make($attributes, $rules, $this->getMessages());
|
||||
|
||||
foreach ($this->configuration as $callable) {
|
||||
$callable($this, $validator);
|
||||
}
|
||||
|
||||
return $validator;
|
||||
}
|
||||
}
|
@@ -9,6 +9,7 @@
|
||||
|
||||
namespace Flarum\ExtensionManager\Api\Controller;
|
||||
|
||||
use Flarum\ExtensionManager\ConfigureAuthValidator;
|
||||
use Flarum\Foundation\Paths;
|
||||
use Flarum\Http\RequestUtil;
|
||||
use Flarum\ExtensionManager\Composer\ComposerJson;
|
||||
@@ -36,7 +37,12 @@ class ConfigureComposerController implements RequestHandlerInterface
|
||||
/**
|
||||
* @var ConfigureComposerValidator
|
||||
*/
|
||||
protected $validator;
|
||||
protected $composerValidator;
|
||||
|
||||
/**
|
||||
* @var ConfigureComposerValidator
|
||||
*/
|
||||
protected $authValidator;
|
||||
|
||||
/**
|
||||
* @var Paths
|
||||
@@ -53,9 +59,10 @@ class ConfigureComposerController implements RequestHandlerInterface
|
||||
*/
|
||||
protected $filesystem;
|
||||
|
||||
public function __construct(ConfigureComposerValidator $validator, Paths $paths, ComposerJson $composerJson, Filesystem $filesystem)
|
||||
public function __construct(ConfigureComposerValidator $composerValidator, ConfigureAuthValidator $authValidator, Paths $paths, ComposerJson $composerJson, Filesystem $filesystem)
|
||||
{
|
||||
$this->validator = $validator;
|
||||
$this->composerValidator = $composerValidator;
|
||||
$this->authValidator = $authValidator;
|
||||
$this->paths = $paths;
|
||||
$this->composerJson = $composerJson;
|
||||
$this->filesystem = $filesystem;
|
||||
@@ -89,7 +96,7 @@ class ConfigureComposerController implements RequestHandlerInterface
|
||||
{
|
||||
$data = Arr::only(Arr::get($request->getParsedBody(), 'data') ?? [], $this->configurable);
|
||||
|
||||
$this->validator->assertValid(['composer' => $data]);
|
||||
$this->composerValidator->assertValid($data);
|
||||
$composerJson = $this->composerJson->get();
|
||||
|
||||
if (! empty($data)) {
|
||||
@@ -105,10 +112,15 @@ class ConfigureComposerController implements RequestHandlerInterface
|
||||
|
||||
$default = [
|
||||
'minimum-stability' => 'stable',
|
||||
'repositories' => [],
|
||||
];
|
||||
|
||||
foreach ($this->configurable as $key) {
|
||||
$composerJson[$key] = Arr::get($composerJson, $key, Arr::get($default, $key));
|
||||
|
||||
if (is_null($composerJson[$key]) && ! is_null($default[$key])) {
|
||||
$composerJson[$key] = $default[$key];
|
||||
}
|
||||
}
|
||||
|
||||
$composerJson = Arr::sortRecursive($composerJson);
|
||||
@@ -120,7 +132,7 @@ class ConfigureComposerController implements RequestHandlerInterface
|
||||
{
|
||||
$data = Arr::get($request->getParsedBody(), 'data');
|
||||
|
||||
$this->validator->assertValid(['auth' => $data]);
|
||||
$this->authValidator->assertValid($data ?? []);
|
||||
|
||||
try {
|
||||
$authJson = json_decode($this->filesystem->get($this->paths->base.'/auth.json'), true);
|
||||
|
28
extensions/package-manager/src/ConfigureAuthValidator.php
Normal file
28
extensions/package-manager/src/ConfigureAuthValidator.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* For detailed copyright and license information, please view the
|
||||
* LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\ExtensionManager;
|
||||
|
||||
use Flarum\Foundation\AbstractValidator;
|
||||
|
||||
class ConfigureAuthValidator extends AbstractValidator
|
||||
{
|
||||
use AllValidatorRules;
|
||||
|
||||
protected $rules = [
|
||||
'github-oauth' => ['sometimes', 'array'],
|
||||
'github-oauth.*' => ['sometimes', 'string'],
|
||||
'gitlab-oauth' => ['sometimes', 'array'],
|
||||
'gitlab-oauth.*' => ['sometimes', 'string'],
|
||||
'gitlab-token' => ['sometimes', 'array'],
|
||||
'gitlab-token.*' => ['sometimes', 'string'],
|
||||
'bearer' => ['sometimes', 'array'],
|
||||
'bearer.*' => ['sometimes', 'string'],
|
||||
];
|
||||
}
|
@@ -13,22 +13,13 @@ use Flarum\Foundation\AbstractValidator;
|
||||
|
||||
class ConfigureComposerValidator extends AbstractValidator
|
||||
{
|
||||
use AllValidatorRules;
|
||||
|
||||
protected $rules = [
|
||||
'composer' => [
|
||||
'minimum-stability' => ['sometimes', 'in:stable,RC,beta,alpha,dev'],
|
||||
'repositories' => ['sometimes', 'array'],
|
||||
'repositories.*.type' => ['sometimes', 'in:composer,vcs,path'],
|
||||
'repositories.*.url' => ['sometimes', 'string'],
|
||||
],
|
||||
'auth' => [
|
||||
'github-oauth' => ['sometimes', 'array'],
|
||||
'github-oauth.*' => ['sometimes', 'string'],
|
||||
'gitlab-oauth' => ['sometimes', 'array'],
|
||||
'gitlab-oauth.*' => ['sometimes', 'string'],
|
||||
'gitlab-token' => ['sometimes', 'array'],
|
||||
'gitlab-token.*' => ['sometimes', 'string'],
|
||||
'bearer' => ['sometimes', 'array'],
|
||||
'bearer.*' => ['sometimes', 'string'],
|
||||
],
|
||||
'minimum-stability' => ['sometimes', 'in:stable,RC,beta,alpha,dev'],
|
||||
'repositories' => ['sometimes', 'array'],
|
||||
'repositories.*' => ['sometimes', 'array', 'required_array_keys:type,url'],
|
||||
'repositories.*.type' => ['in:composer,vcs,path'],
|
||||
'repositories.*.url' => ['string', 'filled'],
|
||||
];
|
||||
}
|
||||
|
Reference in New Issue
Block a user