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);
 | |
|     }
 | |
| }
 |