GeoNetAgent, LDAPWeb, server-audit, server-connection
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

72 lines
2.5 KiB

<?php
namespace App\Services;
use App\Models\AppSetting;
use Illuminate\Support\Facades\Config;
class MailSettingsService
{
private const KEYS = [
'mail_mailer',
'mail_host',
'mail_port',
'mail_username',
'mail_password',
'mail_encryption',
'mail_from_address',
'mail_from_name',
];
public function get(): array
{
$stored = AppSetting::query()
->whereIn('key', self::KEYS)
->pluck('value', 'key')
->all();
return [
'mail_mailer' => $stored['mail_mailer'] ?? env('MAIL_MAILER', 'smtp'),
'mail_host' => $stored['mail_host'] ?? env('MAIL_HOST', ''),
'mail_port' => $stored['mail_port'] ?? env('MAIL_PORT', '465'),
'mail_username' => $stored['mail_username'] ?? env('MAIL_USERNAME', ''),
'mail_password' => $stored['mail_password'] ?? env('MAIL_PASSWORD', ''),
'mail_encryption' => $stored['mail_encryption'] ?? env('MAIL_ENCRYPTION', 'ssl'),
'mail_from_address' => $stored['mail_from_address'] ?? env('MAIL_FROM_ADDRESS', 'support@geonet.co.id'),
'mail_from_name' => $stored['mail_from_name'] ?? env('MAIL_FROM_NAME', 'Geonet Support'),
'has_stored_password' => isset($stored['mail_password']) && $stored['mail_password'] !== '',
];
}
public function update(array $data): void
{
foreach (self::KEYS as $key) {
if (! array_key_exists($key, $data)) {
continue;
}
if ($key === 'mail_password' && ($data[$key] === '' || $data[$key] === null)) {
continue;
}
AppSetting::updateOrCreate(
['key' => $key],
['value' => (string) $data[$key]]
);
}
}
public function apply(): void
{
$settings = $this->get();
Config::set('mail.default', $settings['mail_mailer'] ?: 'smtp');
Config::set('mail.from.address', $settings['mail_from_address']);
Config::set('mail.from.name', $settings['mail_from_name']);
Config::set('mail.mailers.smtp.host', $settings['mail_host']);
Config::set('mail.mailers.smtp.port', (int) $settings['mail_port']);
Config::set('mail.mailers.smtp.username', $settings['mail_username']);
Config::set('mail.mailers.smtp.password', $settings['mail_password']);
Config::set('mail.mailers.smtp.encryption', $settings['mail_encryption'] ?: null);
}
}