diff --git a/changelog.md b/changelog.md index 6a49e0ce..1cba9341 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,6 @@ ## Version 2.0.16 #### Release date: 8. April 2022 -- Test mailgun and postmark connection before storing your credentials into the app +- Test mailgun, ses and postmark connection before storing your credentials into the app - UI enhancements & fixes ## Version 2.0.15 diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 2f625b27..c0b38774 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -6,7 +6,7 @@ "/chunks/status-check.js": "/chunks/status-check.js?id=f82f9939c1326fe2", "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783", "/chunks/database.js": "/chunks/database.js?id=15cc488117dccf7b", - "/chunks/environment.js": "/chunks/environment.js?id=4812fa7819b6b000", + "/chunks/environment.js": "/chunks/environment.js?id=4764d8f6d5c22b3c", "/chunks/app-setup.js": "/chunks/app-setup.js?id=15938ff1ad2d6ed2", "/chunks/admin-account.js": "/chunks/admin-account.js?id=916450217130f3b8", "/chunks/shared.js": "/chunks/shared.js?id=ec06bf0d3ada0f65", @@ -42,7 +42,7 @@ "/chunks/app-settings.js": "/chunks/app-settings.js?id=55da23af2b076069", "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=a694a01f3641712c", "/chunks/app-index.js": "/chunks/app-index.js?id=efdbfa062749ca00", - "/chunks/app-environment.js": "/chunks/app-environment.js?id=831c66051bcd43db", + "/chunks/app-environment.js": "/chunks/app-environment.js?id=0f8a318553409406", "/chunks/app-others.js": "/chunks/app-others.js?id=abb8d96cd7c3a576", "/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=1cfffc99465b9a7a", "/chunks/app-adsense.js": "/chunks/app-adsense.js?id=a5dc9e715f8561bd", diff --git a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue index 7c95b5d6..62103af7 100644 --- a/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue +++ b/resources/js/views/Admin/AppSettings/AppSettingsTabs/Environment.vue @@ -454,14 +454,25 @@ - + + + + + + + + class="focus-border-theme input-dark" + v-model="ses.sender" + placeholder="Type your identity email..." + type="text" + :class="{ '!border-rose-600': errors[0] }" + /> @@ -913,7 +924,8 @@ export default { secret_access_key: undefined, default_region: undefined, session_token: undefined, - }, + sender: undefined, + }, smtp: { host: undefined, port: undefined, diff --git a/resources/js/views/SetupWizard/EnvironmentSetup.vue b/resources/js/views/SetupWizard/EnvironmentSetup.vue index e2c24c4d..e716b3de 100644 --- a/resources/js/views/SetupWizard/EnvironmentSetup.vue +++ b/resources/js/views/SetupWizard/EnvironmentSetup.vue @@ -398,17 +398,28 @@ rules="required" v-slot="{ errors }" > - - + + + + + + + + 'ses', + 'mail.from.address' => $credentials['identity'], + 'mail.from.name' => $credentials['identity'], + 'services.ses.key' => $credentials['access_key'], + 'services.ses.secret' => $credentials['secret_access_key'], + 'services.ses.region' => $credentials['default_region'], + 'services.ses.token' => $credentials['session_token'] ?? null, + ]); + + // Send test email + Mail::to($credentials['identity'])->send(new TestMail($credentials['identity'])); + } catch (TransportException | LogicException | Exception $error) { + abort( + response()->json([ + 'type' => 'mailer-connection-error', + 'title' => 'Mail Connection Error', + 'message' => $error->getMessage(), + ], 401) + ); + } + } +} diff --git a/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php b/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php index 35738447..d0fd6476 100644 --- a/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php +++ b/src/Domain/Settings/Controllers/StoreEmailCredentialsController.php @@ -3,6 +3,7 @@ namespace Domain\Settings\Controllers; use Artisan; use Illuminate\Http\JsonResponse; +use Domain\Settings\Actions\TestSESConnectionAction; use Domain\Settings\Actions\TestSMTPConnectionAction; use Domain\Settings\Actions\TestMailgunConnectionAction; use Domain\Settings\Actions\TestPostmarkConnectionAction; @@ -14,6 +15,7 @@ class StoreEmailCredentialsController private TestPostmarkConnectionAction $testPostmarkConnection, private TestMailgunConnectionAction $testMailgunConnection, private TestSMTPConnectionAction $testSMTPConnection, + private TestSESConnectionAction $testSESConnection, ) { } @@ -46,11 +48,18 @@ class StoreEmailCredentialsController 'token' => $request->input('postmark.token'), 'sender' => $request->input('postmark.sender'), ]), + 'ses' => ($this->testSESConnection)([ + 'access_key' => $request->input('ses.access_key'), + 'secret_access_key' => $request->input('ses.secret_access_key'), + 'default_region' => $request->input('ses.default_region'), + 'session_token' => $request->input('ses.session_token'), + 'identity' => $request->input('ses.sender'), + ]), }; $mail = [ 'log' => [ - 'MAIL_DRIVER' => 'log', + 'MAIL_DRIVER' => 'log', ], 'postmark' => [ 'MAIL_DRIVER' => 'postmark', @@ -74,6 +83,8 @@ class StoreEmailCredentialsController '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'), + 'MAIL_FROM_ADDRESS' => $request->input('ses.sender'), + 'MAIL_FROM_NAME' => $request->input('ses.sender'), ], 'mailgun' => [ 'MAIL_DRIVER' => 'mailgun', diff --git a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php index 0071dc04..19cf8580 100644 --- a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php +++ b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php @@ -6,6 +6,7 @@ use Illuminate\Http\JsonResponse; use App\Http\Controllers\Controller; use Domain\Settings\DTO\S3CredentialsData; use Domain\Settings\Actions\TestS3ConnectionAction; +use Domain\Settings\Actions\TestSESConnectionAction; use Domain\Settings\Actions\TestSMTPConnectionAction; use Domain\Settings\Actions\TestMailgunConnectionAction; use Domain\Settings\Actions\TestPostmarkConnectionAction; @@ -15,6 +16,7 @@ class StoreEnvironmentSettingsController extends Controller { public function __construct( private TestS3ConnectionAction $testS3Connection, + private TestSESConnectionAction $testSESConnection, private TestSMTPConnectionAction $testSMTPConnection, private TestMailgunConnectionAction $testMailgunConnection, private TestPostmarkConnectionAction $testPostmarkConnection, @@ -53,6 +55,13 @@ class StoreEnvironmentSettingsController extends Controller 'token' => $request->input('postmark.token'), 'sender' => $request->input('postmark.sender'), ]), + 'ses' => ($this->testSESConnection)([ + 'access_key' => $request->input('ses.access_key'), + 'secret_access_key' => $request->input('ses.secret_access_key'), + 'default_region' => $request->input('ses.default_region'), + 'session_token' => $request->input('ses.session_token'), + 'identity' => $request->input('ses.sender'), + ]), }; $setup = [ @@ -116,6 +125,8 @@ class StoreEnvironmentSettingsController extends Controller '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'), + 'MAIL_FROM_ADDRESS' => $request->input('ses.sender'), + 'MAIL_FROM_NAME' => $request->input('ses.sender'), ], 'mailgun' => [ 'MAIL_DRIVER' => 'mailgun',