added multiple email drivers into setup wizard

This commit is contained in:
Čarodej
2022-02-09 16:17:31 +01:00
parent a6940379cb
commit 9f5172da85
5 changed files with 518 additions and 412 deletions

View File

@@ -1,4 +1,5 @@
<?php
namespace Domain\SetupWizard\Controllers;
use Artisan;
@@ -13,19 +14,20 @@ class StoreEnvironmentSettingsController extends Controller
*/
public function __invoke(
StoreEnvironmentSetupRequest $request,
): Response {
if (! app()->runningUnitTests()) {
): Response
{
if (!app()->runningUnitTests()) {
$drivers = [
'local' => [
'FILESYSTEM_DRIVER' => 'local',
],
's3' => [
'FILESYSTEM_DRIVER' => '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,
's3' => [
'FILESYSTEM_DRIVER' => '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,
],
];
@@ -37,15 +39,40 @@ class StoreEnvironmentSettingsController extends Controller
$drivers[$driver]
);
$mail = [
'log' => [
'MAIL_DRIVER' => 'log',
],
'postmark' => [
'POSTMARK_TOKEN' => $request->input('postmark.token'),
],
'smtp' => [
'MAIL_DRIVER' => 'smtp',
'MAIL_HOST' => $request->input('mail.host'),
'MAIL_PORT' => $request->input('mail.port'),
'MAIL_USERNAME' => $request->input('mail.username'),
'MAIL_PASSWORD' => $request->input('mail.password'),
'MAIL_ENCRYPTION' => $request->input('mail.encryption'),
],
'ses' => [
'MAIL_DRIVER' => 'ses',
'AWS_ACCESS_KEY_ID' => $request->input('ses.access_key'),
'AWS_SECRET_ACCESS_KEY' => $request->input('ses.secret_access_key'),
'AWS_DEFAULT_REGION' => $request->input('ses.default_region'),
'AWS_SESSION_TOKEN' => $request->input('ses.session_token'),
],
'mailgun' => [
'MAIL_DRIVER' => 'mailgun',
'MAILGUN_DOMAIN' => $request->input('mailgun.domain'),
'MAILGUN_SECRET' => $request->input('mailgun.secret'),
'MAILGUN_ENDPOINT' => $request->input('mailgun.endpoint'),
],
];
// Store credentials for mail
// TODO: add options for mailgun
setEnvironmentValue([
'MAIL_DRIVER' => $request->input('mail.driver'),
'MAIL_HOST' => $request->input('mail.host'),
'MAIL_PORT' => $request->input('mail.port'),
'MAIL_USERNAME' => $request->input('mail.username'),
'MAIL_PASSWORD' => $request->input('mail.password'),
'MAIL_ENCRYPTION' => $request->input('mail.encryption'),
$mail[$request->input('mail.driver')]
]);
Artisan::call('config:cache');

View File

@@ -1,4 +1,5 @@
<?php
namespace Domain\SetupWizard\Requests;
use Illuminate\Foundation\Http\FormRequest;
@@ -30,13 +31,10 @@ class StoreEnvironmentSetupRequest extends FormRequest
'storage.endpoint' => 'sometimes|nullable|string',
'storage.region' => 'sometimes|nullable|string',
'storage.bucket' => 'sometimes|nullable|string',
'mail' => 'required|array',
'mail.driver' => 'required|string',
'mail.host' => 'required|string',
'mail.port' => 'required|string',
'mail.username' => 'required|string',
'mail.password' => 'required|string',
'mail.encryption' => 'required|string',
'mailDriver' => 'required|string',
'mail' => 'sometimes|array',
'ses' => 'sometimes|array',
'mailgun' => 'sometimes|array',
];
}
}