diff --git a/app/Http/Livewire/Settings/Email.php b/app/Http/Livewire/Settings/Email.php index 311e24405..6569f5c71 100644 --- a/app/Http/Livewire/Settings/Email.php +++ b/app/Http/Livewire/Settings/Email.php @@ -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); diff --git a/app/Notifications/Channels/TransactionalEmailChannel.php b/app/Notifications/Channels/TransactionalEmailChannel.php index 730aec8f4..c9057d4e7 100644 --- a/app/Notifications/Channels/TransactionalEmailChannel.php +++ b/app/Notifications/Channels/TransactionalEmailChannel.php @@ -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); diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php index 9671f89c3..5968caf8c 100644 --- a/bootstrap/helpers/shared.php +++ b/bootstrap/helpers/shared.php @@ -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() diff --git a/resources/views/livewire/settings/email.blade.php b/resources/views/livewire/settings/email.blade.php index 52dd46973..f32626edb 100644 --- a/resources/views/livewire/settings/email.blade.php +++ b/resources/views/livewire/settings/email.blade.php @@ -1,5 +1,5 @@
-
+

Transactional Emails

@@ -7,15 +7,20 @@
SMTP settings for password resets, invitations, etc.
+
+ +
- - Send Test Email - + @if ($settings->extra_attributes->smtp_active) + + Send Test Email + + @endif
-
+
-
+
-
+
Invite a new member @else

Invite a new member

-
You need to configure SMTP settings before you can invite a - new - member - via - email. -
+ @if (auth()->user()->isInstanceAdmin()) +
You need to configure Transactional Emails + before + you can invite a + new + member + via + email. +
+ @endif @endif