Move Mail, PDF configuration to Database, standardize configurations

This commit is contained in:
Darko
2025-09-19 15:22:57 +02:00
parent 3da86965e1
commit c0def45040
24 changed files with 948 additions and 433 deletions

View File

@@ -238,29 +238,6 @@ class EnvironmentManager
return DB::connection()->getPdo();
}
/**
* Save the mail content to the .env file.
*
* @return array
*/
public function saveMailVariables(MailEnvironmentRequest $request)
{
$mailEnv = $this->getMailConfiguration($request);
try {
$this->updateEnv($mailEnv);
} catch (Exception $e) {
return [
'error' => 'mail_variables_save_error',
];
}
return [
'success' => 'mail_variables_save_successfully',
];
}
/**
* Save the pdf generation content to the .env file.
*
@@ -315,169 +292,6 @@ class EnvironmentManager
return $pdfEnv;
}
/**
* Returns the mail configuration
*
* @param MailEnvironmentRequest $request
* @return array
*/
private function getMailConfiguration($request)
{
$mailEnv = [];
$driver = $request->get('mail_driver');
switch ($driver) {
case 'smtp':
$mailEnv = [
'MAIL_MAILER' => $request->get('mail_driver'),
'MAIL_HOST' => $request->get('mail_host'),
'MAIL_PORT' => $request->get('mail_port'),
'MAIL_USERNAME' => $request->get('mail_username'),
'MAIL_PASSWORD' => $request->get('mail_password'),
'MAIL_SCHEME' => $request->get('mail_encryption') !== 'none' ? $request->get('mail_encryption') : 'null',
'MAIL_FROM_ADDRESS' => $request->get('from_mail'),
'MAIL_FROM_NAME' => $request->get('from_name'),
];
break;
case 'mailgun':
$mailEnv = [
'MAIL_MAILER' => $request->get('mail_driver'),
'MAIL_HOST' => $request->get('mail_host'),
'MAIL_PORT' => $request->get('mail_port'),
'MAIL_USERNAME' => config('mail.username'),
'MAIL_PASSWORD' => config('mail.password'),
'MAIL_FROM_ADDRESS' => $request->get('from_mail'),
'MAIL_FROM_NAME' => $request->get('from_name'),
'MAILGUN_DOMAIN' => $request->get('mail_mailgun_domain'),
'MAILGUN_SECRET' => $request->get('mail_mailgun_secret'),
'MAILGUN_ENDPOINT' => $request->get('mail_mailgun_endpoint'),
];
break;
case 'ses':
$mailEnv = [
'MAIL_MAILER' => $request->get('mail_driver'),
'MAIL_HOST' => $request->get('mail_host'),
'MAIL_PORT' => $request->get('mail_port'),
'MAIL_USERNAME' => config('mail.username'),
'MAIL_PASSWORD' => config('mail.password'),
'MAIL_ENCRYPTION' => $request->get('mail_encryption'),
'MAIL_FROM_ADDRESS' => $request->get('from_mail'),
'MAIL_FROM_NAME' => $request->get('from_name'),
'SES_KEY' => $request->get('mail_ses_key'),
'SES_SECRET' => $request->get('mail_ses_secret'),
'SES_REGION' => $request->get('mail_ses_region'),
];
break;
case 'sendmail':
case 'mail':
$mailEnv = [
'MAIL_MAILER' => $request->get('mail_driver'),
'MAIL_HOST' => config('mail.host'),
'MAIL_PORT' => config('mail.port'),
'MAIL_USERNAME' => config('mail.username'),
'MAIL_PASSWORD' => config('mail.password'),
'MAIL_ENCRYPTION' => config('mail.encryption'),
'MAIL_FROM_ADDRESS' => $request->get('from_mail'),
'MAIL_FROM_NAME' => $request->get('from_name'),
];
break;
}
return $mailEnv;
}
/**
* Save the disk content to the .env file.
*
* @return array
*/
public function saveDiskVariables(DiskEnvironmentRequest $request)
{
$diskEnv = $this->getDiskConfiguration($request);
try {
$this->updateEnv($diskEnv);
} catch (Exception $e) {
return [
'error' => 'disk_variables_save_error',
];
}
return [
'success' => 'disk_variables_save_successfully',
];
}
/**
* Returns the disk configuration
*
* @return array
*/
private function getDiskConfiguration(DiskEnvironmentRequest $request)
{
$diskEnv = [];
$driver = $request->get('app_domain');
if ($driver) {
$diskEnv['FILESYSTEM_DRIVER'] = $driver;
}
switch ($request->get('selected_driver')) {
case 's3':
$diskEnv = [
'AWS_KEY' => $request->get('aws_key'),
'AWS_SECRET' => $request->get('aws_secret'),
'AWS_REGION' => $request->get('aws_region'),
'AWS_BUCKET' => $request->get('aws_bucket'),
'AWS_ROOT' => $request->get('aws_root'),
];
break;
case 'doSpaces':
$diskEnv = [
'DO_SPACES_KEY' => $request->get('do_spaces_key'),
'DO_SPACES_SECRET' => $request->get('do_spaces_secret'),
'DO_SPACES_REGION' => $request->get('do_spaces_region'),
'DO_SPACES_BUCKET' => $request->get('do_spaces_bucket'),
'DO_SPACES_ENDPOINT' => $request->get('do_spaces_endpoint'),
'DO_SPACES_ROOT' => $request->get('do_spaces_root'),
];
break;
case 'dropbox':
$diskEnv = [
'DROPBOX_TOKEN' => $request->get('dropbox_token'),
'DROPBOX_KEY' => $request->get('dropbox_key'),
'DROPBOX_SECRET' => $request->get('dropbox_secret'),
'DROPBOX_APP' => $request->get('dropbox_app'),
'DROPBOX_ROOT' => $request->get('dropbox_root'),
];
break;
}
return $diskEnv;
}
/**
* Save sanctum stateful domain to the .env file.
*
@@ -507,35 +321,6 @@ class EnvironmentManager
];
}
/**
* Order the env contents
*
* @return void
*/
public function reoderEnv()
{
$contents = $this->getEnvContents();
$contents = explode($this->delimiter, $contents);
if (empty($contents)) {
return;
}
natsort($contents);
$formatted = '';
$previous = '';
foreach ($contents as $current) {
$parts_line = explode('_', $current);
$parts_last = explode('_', $previous);
if ($parts_line[0] != $parts_last[0]) {
$formatted .= $this->delimiter;
}
$formatted .= $current.$this->delimiter;
$previous = $current;
}
file_put_contents($this->envPath, trim($formatted));
}
private function getDomains(string $requestDomain): array
{
$appUrl = config('app.url');