set storage driver via admin

This commit is contained in:
Čarodej
2022-03-08 09:42:18 +01:00
parent c0ca83193f
commit 4e2155b75a
9 changed files with 539 additions and 15 deletions
@@ -0,0 +1,47 @@
<?php
namespace Domain\Settings\Controllers;
use Artisan;
use Domain\Settings\Requests\StoreStorageCredentialsRequest;
use Illuminate\Http\Response;
use Domain\Settings\Requests\StoreEmailCredentialsRequest;
class StoreStorageCredentialsController
{
/**
* Set new email credentials to .env file
*/
public function __invoke(StoreStorageCredentialsRequest $request): Response
{
// Abort in demo mode
abort_if(is_demo(), 204, 'Done.');
if (! app()->runningUnitTests()) {
$drivers = [
'local' => [
'FILESYSTEM_DISK' => 'local',
],
's3' => [
'FILESYSTEM_DISK' => 's3',
'S3_ACCESS_KEY_ID' => $request->input('storage.key') ?? null,
'S3_SECRET_ACCESS_KEY' => $request->input('storage.secret') ?? null,
'S3_DEFAULT_REGION' => $request->input('storage.region') ?? null,
'S3_BUCKET' => $request->input('storage.bucket') ?? null,
'S3_URL' => $request->input('storage.endpoint') ?? null,
],
];
// Get storage driver from request
$driver = 'local' === $request->input('storage.driver') ? 'local' : 's3';
// Storage credentials for storage
setEnvironmentValue(
$drivers[$driver]
);
Artisan::call('config:cache');
}
return response('Done', 204);
}
}
@@ -0,0 +1,29 @@
<?php
namespace Domain\Settings\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreStorageCredentialsRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'storage' => 'required|array',
];
}
}