From 2bd503cdcd5ef6fe9931cddd063eda80df056191 Mon Sep 17 00:00:00 2001 From: Peter Goodhall Date: Tue, 9 Dec 2025 16:09:15 +0000 Subject: [PATCH] Add support for managed email configuration Introduces logic to detect and enforce centrally managed email settings. When managed, email options are displayed as read-only and cannot be changed by users; attempts to save changes are blocked with a notice. The email options view now conditionally renders a read-only summary and test email form if management is enabled. --- application/controllers/Options.php | 6 +++ application/libraries/OptionsLib.php | 22 +++++++++++ application/views/options/email.php | 55 +++++++++++++++++++++++++++- 3 files changed, 82 insertions(+), 1 deletion(-) diff --git a/application/controllers/Options.php b/application/controllers/Options.php index 89c304b1e..c6905794d 100644 --- a/application/controllers/Options.php +++ b/application/controllers/Options.php @@ -274,6 +274,7 @@ class Options extends CI_Controller { $data['page_title'] = $this->lang->line('options_cloudlog_options'); $data['sub_heading'] = $this->lang->line('options_email'); + $data['is_managed'] = ($this->config->item('managed_service') || $this->config->item('managed_email_protocol')) ? true : false; $this->load->view('interface_assets/header', $data); $this->load->view('options/email'); @@ -282,6 +283,11 @@ class Options extends CI_Controller { // Handles saving the radio options to the options system. function email_save() { + // Check if email is managed - if so, redirect with message + if ($this->config->item('managed_service') || $this->config->item('managed_email_protocol')) { + $this->session->set_flashdata('notice', 'Email settings are centrally managed and cannot be changed here.'); + redirect('options'); + } // Get Language Options diff --git a/application/libraries/OptionsLib.php b/application/libraries/OptionsLib.php index 6ad036b72..19bc75ae5 100644 --- a/application/libraries/OptionsLib.php +++ b/application/libraries/OptionsLib.php @@ -48,6 +48,28 @@ class OptionsLib { function get_option($option_name) { // Make Codeigniter functions available to library $CI =& get_instance(); + + // Check for managed email configuration overrides + $email_settings_map = array( + 'emailProtocol' => 'managed_email_protocol', + 'smtpEncryption' => 'managed_email_smtp_encryption', + 'emailAddress' => 'managed_email_address', + 'emailSenderName' => 'managed_email_sender_name', + 'smtpHost' => 'managed_email_smtp_host', + 'smtpPort' => 'managed_email_smtp_port', + 'smtpUsername' => 'managed_email_smtp_username', + 'smtpPassword' => 'managed_email_smtp_password' + ); + + // If this is an email setting and managed email is configured, return managed value + if (array_key_exists($option_name, $email_settings_map)) { + $managed_key = $email_settings_map[$option_name]; + $managed_value = $CI->config->item($managed_key); + if ($managed_value !== NULL && $managed_value !== FALSE) { + return $managed_value; + } + } + if (strpos($option_name, 'option_') !== false) { if(!$CI->config->item($option_name)) { //Load the options model diff --git a/application/views/options/email.php b/application/views/options/email.php index ffa8ce942..9837194e1 100644 --- a/application/views/options/email.php +++ b/application/views/options/email.php @@ -38,8 +38,60 @@ session->flashdata('testmailSuccess'); ?> + + + +
+ Email settings are centrally managed and cannot be changed here. +
+ +
Current Email Configuration
+ + + + + + optionslib->get_option('emailProtocol') == 'smtp') { ?> + + + + + + + + + + + + + + + + + + + + + +
:optionslib->get_option('emailProtocol'); ?>
:optionslib->get_option('smtpEncryption') ?: 'None'; ?>
:optionslib->get_option('smtpHost'); ?>
:optionslib->get_option('smtpPort'); ?>
:optionslib->get_option('emailAddress'); ?>
:optionslib->get_option('emailSenderName'); ?>
+ +
+
Test Email
+ 'testMailForm']); ?> + + + + - + + + +
@@ -124,6 +176,7 @@ document.getElementById('testMailSpinner').style.display = 'inline-block'; }); +