This commit is contained in:
Andras Bacsai 2023-06-13 10:51:58 +02:00
parent 9e66e7a3e1
commit ecd16de53f
5 changed files with 49 additions and 15 deletions

View File

@ -12,6 +12,7 @@ class Email extends Component
public InstanceSettings $settings;
protected $rules = [
'settings.extra_attributes.smtp_active' => 'nullable|boolean',
'settings.extra_attributes.smtp_host' => 'required',
'settings.extra_attributes.smtp_port' => 'required|numeric',
'settings.extra_attributes.smtp_encryption' => 'nullable',
@ -22,6 +23,26 @@ class Email extends Component
'settings.extra_attributes.smtp_from_address' => 'required|email',
'settings.extra_attributes.smtp_from_name' => 'required',
];
protected $validationAttributes = [
'settings.extra_attributes.smtp_from_address' => 'From Address',
'settings.extra_attributes.smtp_from_name' => 'From Name',
'settings.extra_attributes.smtp_recipients' => 'Recipients',
'settings.extra_attributes.smtp_host' => 'Host',
'settings.extra_attributes.smtp_port' => 'Port',
'settings.extra_attributes.smtp_encryption' => 'Encryption',
'settings.extra_attributes.smtp_username' => 'Username',
'settings.extra_attributes.smtp_password' => 'Password',
'settings.extra_attributes.smtp_test_recipients' => 'Test Recipients',
];
public function instantSave()
{
try {
$this->submit();
} catch (\Exception $e) {
$this->settings->extra_attributes->smtp_active = false;
$this->validate();
}
}
public function test_email()
{
Notification::send($this->settings, new TestEmail);

View File

@ -12,11 +12,14 @@ class TransactionalEmailChannel
{
public function send(User $notifiable, Notification $notification): void
{
$settings = InstanceSettings::get();
if ($settings->extra_attributes?->get('smtp_active') !== true) {
return;
}
$email = $notifiable->email;
if (!$email) {
return;
}
$settings = InstanceSettings::get();
$this->bootConfigs($settings);
$mailMessage = $notification->toMail($notifiable);

View File

@ -63,7 +63,7 @@ function generate_application_name(string $git_repository, string $git_branch)
function is_transactional_emails_active()
{
return data_get(InstanceSettings::get(), 'extra_attributes.smtp_host');
return data_get(InstanceSettings::get(), 'extra_attributes.smtp_active');
}
function set_transanctional_email_settings()

View File

@ -1,5 +1,5 @@
<div>
<form wire:submit.prevent='submit' class="flex flex-col">
<form wire:submit.prevent='submit' class="flex flex-col pb-10">
<div class="flex items-center gap-2">
<h3>Transactional Emails</h3>
<x-forms.button type="submit">
@ -7,15 +7,20 @@
</x-forms.button>
</div>
<div class="pt-2 pb-4 text-sm">SMTP settings for password resets, invitations, etc.</div>
<div class="flex flex-col">
<x-forms.checkbox instantSave id="settings.extra_attributes.smtp_active" label="Enabled" />
</div>
<div class="flex items-end gap-2">
<x-forms.input id="settings.extra_attributes.smtp_test_recipients" label="Test Recipient(s)"
helper="Email list to send a test email to, separated by comma." />
<x-forms.button wire:click='test_email'>
Send Test Email
</x-forms.button>
@if ($settings->extra_attributes->smtp_active)
<x-forms.button wire:click='test_email'>
Send Test Email
</x-forms.button>
@endif
</div>
<div class="flex flex-col gap-2 xl:flex-row">
<div class="flex flex-col w-96">
<div class="flex flex-col w-full">
<x-forms.input required id="settings.extra_attributes.smtp_host" helper="SMTP Hostname"
placeholder="smtp.mailgun.org" label="Host" />
<x-forms.input required id="settings.extra_attributes.smtp_port" helper="SMTP Port" placeholder="587"
@ -23,7 +28,7 @@
<x-forms.input id="settings.extra_attributes.smtp_encryption"
helper="If SMTP through SSL, set it to 'tls'." placeholder="tls" label="Encryption" />
</div>
<div class="flex flex-col w-96">
<div class="flex flex-col w-full">
<x-forms.input id="settings.extra_attributes.smtp_username" helper="SMTP Username"
label="SMTP Username" />
<x-forms.input id="settings.extra_attributes.smtp_password" type="password" helper="SMTP Password"
@ -31,7 +36,7 @@
<x-forms.input id="settings.extra_attributes.smtp_timeout" helper="Timeout value for sending emails."
label="Timeout" />
</div>
<div class="flex flex-col w-96">
<div class="flex flex-col w-full">
<x-forms.input required id="settings.extra_attributes.smtp_from_name" helper="Name used in emails."
label="From Name" />
<x-forms.input required id="settings.extra_attributes.smtp_from_address"

View File

@ -24,12 +24,17 @@
<h3 class="pb-4">Invite a new member</h3>
@else
<h3>Invite a new member</h3>
<div class="pb-4 text-xs text-warning">You need to configure SMTP settings before you can invite a
new
member
via
email.
</div>
@if (auth()->user()->isInstanceAdmin())
<div class="pb-4 text-xs text-warning">You need to configure <a href="/settings/emails"
class="underline text-warning">Transactional Emails</a>
before
you can invite a
new
member
via
email.
</div>
@endif
@endif
<livewire:team.invite-link />
</div>