Files
panel-pelican-dev/app/Console/Commands/Environment/EmailSettingsCommand.php

145 lines
5.0 KiB
PHP
Raw Normal View History

<?php
2024-03-12 22:39:16 -04:00
namespace App\Console\Commands\Environment;
use Illuminate\Console\Command;
2024-03-12 22:39:16 -04:00
use App\Traits\Commands\EnvironmentWriterTrait;
class EmailSettingsCommand extends Command
{
use EnvironmentWriterTrait;
protected $description = 'Set or update the email sending configuration for the Panel.';
protected $signature = 'p:environment:mail
{--driver= : The mail driver to use.}
{--email= : Email address that messages from the Panel will originate from.}
{--from= : The name emails from the Panel will appear to be from.}
{--encryption=}
{--host=}
{--port=}
{--endpoint=}
{--username=}
{--password=}';
protected array $variables = [];
/**
* Handle command execution.
2019-09-05 21:32:57 -07:00
*
2024-03-12 22:39:16 -04:00
* @throws \App\Exceptions\PanelException
*/
2024-03-19 21:12:27 -04:00
public function handle(): void
{
$this->variables['MAIL_DRIVER'] = $this->option('driver') ?? $this->choice(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_driver'),
[
2024-04-25 18:57:21 -04:00
'log' => 'Log',
'smtp' => 'SMTP Server',
'sendmail' => 'sendmail Binary',
2024-04-25 18:57:21 -04:00
'mailgun' => 'Mailgun',
'mandrill' => 'Mandrill',
'postmark' => 'Postmark',
2021-01-23 12:33:34 -08:00
],
2024-04-25 18:57:21 -04:00
'smtp',
);
$method = 'setup' . studly_case($this->variables['MAIL_DRIVER']) . 'DriverVariables';
if (method_exists($this, $method)) {
$this->{$method}();
}
$this->variables['MAIL_FROM_ADDRESS'] = $this->option('email') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_mail_from'),
2024-03-19 04:59:19 -04:00
config('mail.from.address')
2021-01-23 12:33:34 -08:00
);
$this->variables['MAIL_FROM_NAME'] = $this->option('from') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_mail_name'),
2024-03-19 04:59:19 -04:00
config('mail.from.name')
2021-01-23 12:33:34 -08:00
);
$this->writeToEnvironment($this->variables);
$this->line('Updating stored environment configuration file.');
$this->line('');
}
/**
* Handle variables for SMTP driver.
*/
private function setupSmtpDriverVariables()
{
$this->variables['MAIL_HOST'] = $this->option('host') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_smtp_host'),
2024-03-19 04:59:19 -04:00
config('mail.mailers.smtp.host')
2021-01-23 12:33:34 -08:00
);
$this->variables['MAIL_PORT'] = $this->option('port') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_smtp_port'),
2024-03-19 04:59:19 -04:00
config('mail.mailers.smtp.port')
2021-01-23 12:33:34 -08:00
);
$this->variables['MAIL_USERNAME'] = $this->option('username') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_smtp_username'),
2024-03-19 04:59:19 -04:00
config('mail.mailers.smtp.username')
2021-01-23 12:33:34 -08:00
);
$this->variables['MAIL_PASSWORD'] = $this->option('password') ?? $this->secret(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_smtp_password')
);
2022-12-12 14:21:47 -07:00
$this->variables['MAIL_ENCRYPTION'] = $this->option('encryption') ?? $this->choice(
trans('command/messages.environment.mail.ask_encryption'),
['tls' => 'TLS', 'ssl' => 'SSL', '' => 'None'],
2024-03-19 04:59:19 -04:00
config('mail.mailers.smtp.encryption', 'tls')
2022-12-12 14:21:47 -07:00
);
}
/**
* Handle variables for mailgun driver.
*/
private function setupMailgunDriverVariables()
{
$this->variables['MAILGUN_DOMAIN'] = $this->option('host') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_mailgun_domain'),
2024-03-19 04:59:19 -04:00
config('services.mailgun.domain')
2021-01-23 12:33:34 -08:00
);
$this->variables['MAILGUN_SECRET'] = $this->option('password') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_mailgun_secret'),
2024-03-19 04:59:19 -04:00
config('services.mailgun.secret')
2021-01-23 12:33:34 -08:00
);
$this->variables['MAILGUN_ENDPOINT'] = $this->option('endpoint') ?? $this->ask(
trans('command/messages.environment.mail.ask_mailgun_endpoint'),
2024-03-19 04:59:19 -04:00
config('services.mailgun.endpoint')
);
}
/**
* Handle variables for mandrill driver.
*/
private function setupMandrillDriverVariables()
{
$this->variables['MANDRILL_SECRET'] = $this->option('password') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_mandrill_secret'),
2024-03-19 04:59:19 -04:00
config('services.mandrill.secret')
2021-01-23 12:33:34 -08:00
);
}
/**
* Handle variables for postmark driver.
*/
private function setupPostmarkDriverVariables()
{
$this->variables['MAIL_DRIVER'] = 'smtp';
$this->variables['MAIL_HOST'] = 'smtp.postmarkapp.com';
$this->variables['MAIL_PORT'] = 587;
$this->variables['MAIL_USERNAME'] = $this->variables['MAIL_PASSWORD'] = $this->option('username') ?? $this->ask(
2021-01-23 12:33:34 -08:00
trans('command/messages.environment.mail.ask_postmark_username'),
2024-03-19 04:59:19 -04:00
config('mail.username')
2021-01-23 12:33:34 -08:00
);
}
}