57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace App\Services;
 | 
						|
 | 
						|
use Illuminate\Config\Repository;
 | 
						|
 | 
						|
class ConfigurationRepository
 | 
						|
{
 | 
						|
    private Repository $config;
 | 
						|
 | 
						|
    public function __construct(Repository $config)
 | 
						|
    {
 | 
						|
        $this->config = $config;
 | 
						|
    }
 | 
						|
 | 
						|
    public function updateMailConfig($settings): void
 | 
						|
    {
 | 
						|
        if ($settings->resend_enabled) {
 | 
						|
            $this->config->set('mail.default', 'resend');
 | 
						|
            $this->config->set('mail.from.address', $settings->smtp_from_address ?? 'test@example.com');
 | 
						|
            $this->config->set('mail.from.name', $settings->smtp_from_name ?? 'Test');
 | 
						|
            $this->config->set('resend.api_key', $settings->resend_api_key);
 | 
						|
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        if ($settings->smtp_enabled) {
 | 
						|
            $encryption = match (strtolower($settings->smtp_encryption)) {
 | 
						|
                'starttls' => null,
 | 
						|
                'tls' => 'tls',
 | 
						|
                'none' => null,
 | 
						|
                default => null,
 | 
						|
            };
 | 
						|
 | 
						|
            $this->config->set('mail.default', 'smtp');
 | 
						|
            $this->config->set('mail.from.address', $settings->smtp_from_address ?? 'test@example.com');
 | 
						|
            $this->config->set('mail.from.name', $settings->smtp_from_name ?? 'Test');
 | 
						|
            $this->config->set('mail.mailers.smtp', [
 | 
						|
                'transport' => 'smtp',
 | 
						|
                'host' => $settings->smtp_host,
 | 
						|
                'port' => $settings->smtp_port,
 | 
						|
                'encryption' => $encryption,
 | 
						|
                'username' => $settings->smtp_username,
 | 
						|
                'password' => $settings->smtp_password,
 | 
						|
                'timeout' => $settings->smtp_timeout,
 | 
						|
                'local_domain' => null,
 | 
						|
                'auto_tls' => $settings->smtp_encryption === 'none' ? '0' : '',
 | 
						|
            ]);
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function disableSshMux(): void
 | 
						|
    {
 | 
						|
        $this->config->set('constants.ssh.mux_enabled', false);
 | 
						|
    }
 | 
						|
}
 |