From 9f5172da85d70f569157610263361a63a0af750d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=8Carodej?= Date: Wed, 9 Feb 2022 16:17:31 +0100 Subject: [PATCH] added multiple email drivers into setup wizard --- .env.example | 11 + config/services.php | 12 +- .../js/views/SetupWizard/EnvironmentSetup.vue | 836 ++++++++++-------- .../StoreEnvironmentSettingsController.php | 59 +- .../Requests/StoreEnvironmentSetupRequest.php | 12 +- 5 files changed, 518 insertions(+), 412 deletions(-) diff --git a/.env.example b/.env.example index 99429b48..d8e546b7 100644 --- a/.env.example +++ b/.env.example @@ -42,6 +42,17 @@ MAIL_ENCRYPTION= MAIL_FROM_ADDRESS="${MAIL_USERNAME}" MAIL_FROM_NAME="${MAIL_USERNAME}" +POSTMARK_TOKEN= + +MAILGUN_DOMAIN= +MAILGUN_SECRET= +MAILGUN_ENDPOINT= + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION= +AWS_SESSION_TOKEN= + S3_ACCESS_KEY_ID= S3_SECRET_ACCESS_KEY= S3_DEFAULT_REGION= diff --git a/config/services.php b/config/services.php index 4770d169..0743cce4 100644 --- a/config/services.php +++ b/config/services.php @@ -24,14 +24,10 @@ return [ ], 'ses' => [ - 'key' => env('S3_ACCESS_KEY_ID'), - 'secret' => env('S3_SECRET_ACCESS_KEY'), - 'region' => env('S3_DEFAULT_REGION', 'us-east-1'), - ], - - 'passport' => [ - 'client_id' => env('PASSPORT_CLIENT_ID'), - 'client_secret' => env('PASSPORT_CLIENT_SECRET'), + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'token' => env('AWS_SESSION_TOKEN'), ], 'google' => [ diff --git a/resources/js/views/SetupWizard/EnvironmentSetup.vue b/resources/js/views/SetupWizard/EnvironmentSetup.vue index 5ea436b5..4b4799d6 100644 --- a/resources/js/views/SetupWizard/EnvironmentSetup.vue +++ b/resources/js/views/SetupWizard/EnvironmentSetup.vue @@ -55,40 +55,96 @@ Email Setup - - + + - - - - - +
+ + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + +
+ +
+ + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
@@ -99,378 +155,396 @@ diff --git a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php index e78d2ead..32e9faef 100644 --- a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php +++ b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php @@ -1,4 +1,5 @@ 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'); diff --git a/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php b/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php index 67095718..35457e3a 100644 --- a/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php +++ b/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php @@ -1,4 +1,5 @@ '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', ]; } }