mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 08:12:15 +00:00
Test ses connection before storing credentials into the app
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
## Version 2.0.16
|
## Version 2.0.16
|
||||||
#### Release date: 8. April 2022
|
#### 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
|
- UI enhancements & fixes
|
||||||
|
|
||||||
## Version 2.0.15
|
## Version 2.0.15
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
"/chunks/status-check.js": "/chunks/status-check.js?id=f82f9939c1326fe2",
|
"/chunks/status-check.js": "/chunks/status-check.js?id=f82f9939c1326fe2",
|
||||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783",
|
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=df5bd89528649783",
|
||||||
"/chunks/database.js": "/chunks/database.js?id=15cc488117dccf7b",
|
"/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/app-setup.js": "/chunks/app-setup.js?id=15938ff1ad2d6ed2",
|
||||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=916450217130f3b8",
|
"/chunks/admin-account.js": "/chunks/admin-account.js?id=916450217130f3b8",
|
||||||
"/chunks/shared.js": "/chunks/shared.js?id=ec06bf0d3ada0f65",
|
"/chunks/shared.js": "/chunks/shared.js?id=ec06bf0d3ada0f65",
|
||||||
@@ -42,7 +42,7 @@
|
|||||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=55da23af2b076069",
|
"/chunks/app-settings.js": "/chunks/app-settings.js?id=55da23af2b076069",
|
||||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=a694a01f3641712c",
|
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=a694a01f3641712c",
|
||||||
"/chunks/app-index.js": "/chunks/app-index.js?id=efdbfa062749ca00",
|
"/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-others.js": "/chunks/app-others.js?id=abb8d96cd7c3a576",
|
||||||
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=1cfffc99465b9a7a",
|
"/chunks/app-sign-in-out.js": "/chunks/app-sign-in-out.js?id=1cfffc99465b9a7a",
|
||||||
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=a5dc9e715f8561bd",
|
"/chunks/app-adsense.js": "/chunks/app-adsense.js?id=a5dc9e715f8561bd",
|
||||||
|
|||||||
@@ -454,14 +454,25 @@
|
|||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
<ValidationProvider tag="div" mode="passive" name="Default Region" rules="required" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Default Region" rules="required" v-slot="{ errors }">
|
||||||
<AppInputText title="Default Region" :error="errors[0]">
|
<AppInputText title="Region" :error="errors[0]">
|
||||||
|
<SelectInput
|
||||||
|
v-model="ses.default_region"
|
||||||
|
:options="s3Regions"
|
||||||
|
placeholder="Select your region"
|
||||||
|
:isError="errors[0]"
|
||||||
|
/>
|
||||||
|
</AppInputText>
|
||||||
|
</ValidationProvider>
|
||||||
|
|
||||||
|
<ValidationProvider tag="div" mode="passive" name="Sender" rules="required|email" v-slot="{ errors }">
|
||||||
|
<AppInputText title="Identity (Email)" :error="errors[0]">
|
||||||
<input
|
<input
|
||||||
class="focus-border-theme input-dark"
|
class="focus-border-theme input-dark"
|
||||||
v-model="ses.default_region"
|
v-model="ses.sender"
|
||||||
placeholder="Type your default region"
|
placeholder="Type your identity email..."
|
||||||
type="text"
|
type="text"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
/>
|
/>
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
@@ -913,7 +924,8 @@ export default {
|
|||||||
secret_access_key: undefined,
|
secret_access_key: undefined,
|
||||||
default_region: undefined,
|
default_region: undefined,
|
||||||
session_token: undefined,
|
session_token: undefined,
|
||||||
},
|
sender: undefined,
|
||||||
|
},
|
||||||
smtp: {
|
smtp: {
|
||||||
host: undefined,
|
host: undefined,
|
||||||
port: undefined,
|
port: undefined,
|
||||||
|
|||||||
@@ -398,17 +398,28 @@
|
|||||||
rules="required"
|
rules="required"
|
||||||
v-slot="{ errors }"
|
v-slot="{ errors }"
|
||||||
>
|
>
|
||||||
<AppInputText title="Default Region" :error="errors[0]">
|
<AppInputText title="Region" :error="errors[0]">
|
||||||
<input
|
<SelectInput
|
||||||
class="focus-border-theme input-dark"
|
v-model="ses.default_region"
|
||||||
v-model="ses.default_region"
|
:options="s3Regions"
|
||||||
placeholder="Type your default region"
|
placeholder="Select your region"
|
||||||
type="text"
|
:isError="errors[0]"
|
||||||
:class="{ '!border-rose-600': errors[0] }"
|
/>
|
||||||
/>
|
|
||||||
</AppInputText>
|
</AppInputText>
|
||||||
</ValidationProvider>
|
</ValidationProvider>
|
||||||
|
|
||||||
|
<ValidationProvider tag="div" mode="passive" name="Sender" rules="required|email" v-slot="{ errors }">
|
||||||
|
<AppInputText title="Identity (Email)" :error="errors[0]">
|
||||||
|
<input
|
||||||
|
class="focus-border-theme input-dark"
|
||||||
|
v-model="ses.sender"
|
||||||
|
placeholder="Type your identity email..."
|
||||||
|
type="text"
|
||||||
|
:class="{ '!border-rose-600': errors[0] }"
|
||||||
|
/>
|
||||||
|
</AppInputText>
|
||||||
|
</ValidationProvider>
|
||||||
|
|
||||||
<ValidationProvider tag="div" mode="passive" name="Session Token" v-slot="{ errors }">
|
<ValidationProvider tag="div" mode="passive" name="Session Token" v-slot="{ errors }">
|
||||||
<AppInputText title="Session Token (optional)" :error="errors[0]" :is-last="true">
|
<AppInputText title="Session Token (optional)" :error="errors[0]" :is-last="true">
|
||||||
<input
|
<input
|
||||||
@@ -922,7 +933,8 @@ export default {
|
|||||||
secret_access_key: undefined,
|
secret_access_key: undefined,
|
||||||
default_region: undefined,
|
default_region: undefined,
|
||||||
session_token: undefined,
|
session_token: undefined,
|
||||||
},
|
sender: undefined,
|
||||||
|
},
|
||||||
smtp: {
|
smtp: {
|
||||||
host: undefined,
|
host: undefined,
|
||||||
port: undefined,
|
port: undefined,
|
||||||
|
|||||||
38
src/Domain/Settings/Actions/TestSESConnectionAction.php
Normal file
38
src/Domain/Settings/Actions/TestSESConnectionAction.php
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
<?php
|
||||||
|
namespace Domain\Settings\Actions;
|
||||||
|
|
||||||
|
use Mail;
|
||||||
|
use Exception;
|
||||||
|
use Domain\Settings\Mail\TestMail;
|
||||||
|
use Symfony\Component\Mailer\Exception\LogicException;
|
||||||
|
use Symfony\Component\Mailer\Exception\TransportException;
|
||||||
|
|
||||||
|
class TestSESConnectionAction
|
||||||
|
{
|
||||||
|
public function __invoke(array $credentials)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
// Set temporary mail connection
|
||||||
|
config([
|
||||||
|
'mail.driver' => '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)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ namespace Domain\Settings\Controllers;
|
|||||||
|
|
||||||
use Artisan;
|
use Artisan;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Domain\Settings\Actions\TestSESConnectionAction;
|
||||||
use Domain\Settings\Actions\TestSMTPConnectionAction;
|
use Domain\Settings\Actions\TestSMTPConnectionAction;
|
||||||
use Domain\Settings\Actions\TestMailgunConnectionAction;
|
use Domain\Settings\Actions\TestMailgunConnectionAction;
|
||||||
use Domain\Settings\Actions\TestPostmarkConnectionAction;
|
use Domain\Settings\Actions\TestPostmarkConnectionAction;
|
||||||
@@ -14,6 +15,7 @@ class StoreEmailCredentialsController
|
|||||||
private TestPostmarkConnectionAction $testPostmarkConnection,
|
private TestPostmarkConnectionAction $testPostmarkConnection,
|
||||||
private TestMailgunConnectionAction $testMailgunConnection,
|
private TestMailgunConnectionAction $testMailgunConnection,
|
||||||
private TestSMTPConnectionAction $testSMTPConnection,
|
private TestSMTPConnectionAction $testSMTPConnection,
|
||||||
|
private TestSESConnectionAction $testSESConnection,
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,11 +48,18 @@ class StoreEmailCredentialsController
|
|||||||
'token' => $request->input('postmark.token'),
|
'token' => $request->input('postmark.token'),
|
||||||
'sender' => $request->input('postmark.sender'),
|
'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 = [
|
$mail = [
|
||||||
'log' => [
|
'log' => [
|
||||||
'MAIL_DRIVER' => 'log',
|
'MAIL_DRIVER' => 'log',
|
||||||
],
|
],
|
||||||
'postmark' => [
|
'postmark' => [
|
||||||
'MAIL_DRIVER' => 'postmark',
|
'MAIL_DRIVER' => 'postmark',
|
||||||
@@ -74,6 +83,8 @@ class StoreEmailCredentialsController
|
|||||||
'AWS_SECRET_ACCESS_KEY' => $request->input('ses.secret_access_key'),
|
'AWS_SECRET_ACCESS_KEY' => $request->input('ses.secret_access_key'),
|
||||||
'AWS_DEFAULT_REGION' => $request->input('ses.default_region'),
|
'AWS_DEFAULT_REGION' => $request->input('ses.default_region'),
|
||||||
'AWS_SESSION_TOKEN' => $request->input('ses.session_token'),
|
'AWS_SESSION_TOKEN' => $request->input('ses.session_token'),
|
||||||
|
'MAIL_FROM_ADDRESS' => $request->input('ses.sender'),
|
||||||
|
'MAIL_FROM_NAME' => $request->input('ses.sender'),
|
||||||
],
|
],
|
||||||
'mailgun' => [
|
'mailgun' => [
|
||||||
'MAIL_DRIVER' => 'mailgun',
|
'MAIL_DRIVER' => 'mailgun',
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ use Illuminate\Http\JsonResponse;
|
|||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Domain\Settings\DTO\S3CredentialsData;
|
use Domain\Settings\DTO\S3CredentialsData;
|
||||||
use Domain\Settings\Actions\TestS3ConnectionAction;
|
use Domain\Settings\Actions\TestS3ConnectionAction;
|
||||||
|
use Domain\Settings\Actions\TestSESConnectionAction;
|
||||||
use Domain\Settings\Actions\TestSMTPConnectionAction;
|
use Domain\Settings\Actions\TestSMTPConnectionAction;
|
||||||
use Domain\Settings\Actions\TestMailgunConnectionAction;
|
use Domain\Settings\Actions\TestMailgunConnectionAction;
|
||||||
use Domain\Settings\Actions\TestPostmarkConnectionAction;
|
use Domain\Settings\Actions\TestPostmarkConnectionAction;
|
||||||
@@ -15,6 +16,7 @@ class StoreEnvironmentSettingsController extends Controller
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private TestS3ConnectionAction $testS3Connection,
|
private TestS3ConnectionAction $testS3Connection,
|
||||||
|
private TestSESConnectionAction $testSESConnection,
|
||||||
private TestSMTPConnectionAction $testSMTPConnection,
|
private TestSMTPConnectionAction $testSMTPConnection,
|
||||||
private TestMailgunConnectionAction $testMailgunConnection,
|
private TestMailgunConnectionAction $testMailgunConnection,
|
||||||
private TestPostmarkConnectionAction $testPostmarkConnection,
|
private TestPostmarkConnectionAction $testPostmarkConnection,
|
||||||
@@ -53,6 +55,13 @@ class StoreEnvironmentSettingsController extends Controller
|
|||||||
'token' => $request->input('postmark.token'),
|
'token' => $request->input('postmark.token'),
|
||||||
'sender' => $request->input('postmark.sender'),
|
'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 = [
|
$setup = [
|
||||||
@@ -116,6 +125,8 @@ class StoreEnvironmentSettingsController extends Controller
|
|||||||
'AWS_SECRET_ACCESS_KEY' => $request->input('ses.secret_access_key'),
|
'AWS_SECRET_ACCESS_KEY' => $request->input('ses.secret_access_key'),
|
||||||
'AWS_DEFAULT_REGION' => $request->input('ses.default_region'),
|
'AWS_DEFAULT_REGION' => $request->input('ses.default_region'),
|
||||||
'AWS_SESSION_TOKEN' => $request->input('ses.session_token'),
|
'AWS_SESSION_TOKEN' => $request->input('ses.session_token'),
|
||||||
|
'MAIL_FROM_ADDRESS' => $request->input('ses.sender'),
|
||||||
|
'MAIL_FROM_NAME' => $request->input('ses.sender'),
|
||||||
],
|
],
|
||||||
'mailgun' => [
|
'mailgun' => [
|
||||||
'MAIL_DRIVER' => 'mailgun',
|
'MAIL_DRIVER' => 'mailgun',
|
||||||
|
|||||||
Reference in New Issue
Block a user