This commit is contained in:
Kavalar 2024-12-04 18:45:17 +03:00
parent d318c99ba5
commit 1b486eb788
6 changed files with 90 additions and 17 deletions

View File

@ -1,3 +1,5 @@
APP_NAME="It Guild Micro Framework"
DB_HOST=localhost
DB_USER=user
DB_DRIVER=mysql
@ -10,6 +12,11 @@ DB_PREFIX=''
VIEWS_PATH=/views
VIEWS_CACHE_PATH=/views_cache
MAIL_SMTP_HOST=smtp.mail.ru
MAIL_SMTP_PORT=587
MAIL_SMTP_USERNAME=username@mail.ru
MAIL_SMTP_PASSWORD=somepassword
MODULE_SHOP_URL='http://igfs.loc'
MODULE_SHOP_TOKEN='your token'

View File

@ -1,6 +1,7 @@
<?php
$secure_config = [
'web_auth_type' => 'login_password', // login_password, email_code
'token_type' => 'JWT', // random_bytes, md5, crypt, hash, JWT
'token_expired_time' => "+30 days", // +1 day
];

50
kernel/Mailing.php Normal file
View File

@ -0,0 +1,50 @@
<?php
namespace kernel;
use kernel\helpers\Debug;
use kernel\helpers\SMTP;
use PHPMailer\PHPMailer\Exception;
class Mailing
{
protected SMTP $SMTP;
protected CgView $cgView;
protected array $data;
public function __construct(array $data = [])
{
$this->cgView = new CgView();
$this->cgView->viewPath = KERNEL_DIR . "/views/mailing/";
$this->data = $data;
$this->SMTP = new SMTP();
$this->init();
}
/**
* @throws Exception
*/
public function send_html(string $tpl, array $tplParams, array $mailParams): ?false
{
$mailParams['body'] = $this->cgView->fetch($tpl, $tplParams);
return $this->SMTP->send_html($mailParams);
}
public function run()
{
}
public static function create(array $data = []): static
{
return new static($data);
}
protected function init()
{
}
}

View File

@ -8,28 +8,31 @@ use PHPMailer\PHPMailer\PHPMailer;
class SMTP
{
public PHPMailer $mail;
public function __construct(array $config = [])
public function __construct()
{
$this->mail = new PHPMailer(true);
$this->mail->CharSet = 'UTF-8';
$this->mail->isSMTP();
$this->mail->SMTPAuth = true;
$this->mail->SMTPDebug = 0;
$this->mail->Host = $config['host'] ?? '';
$this->mail->Port = $config['port'] ?? 587;
$this->mail->Username = $config['username'] ?? '';
$this->mail->Password = $config['password'] ?? '';
$this->mail->Host = $_ENV['MAIL_SMTP_HOST'];
$this->mail->Port = $_ENV['MAIL_SMTP_PORT'];
$this->mail->Username = $_ENV['MAIL_SMTP_USERNAME'];
$this->mail->Password = $_ENV['MAIL_SMTP_PASSWORD'];
}
/**
* @throws Exception
*/
public function send(string $address): void
public function send_html(array $params)
{
$this->mail->setFrom($this->mail->Username, $this->mail->Host);
$this->mail->addAddress($address);
$this->mail->Subject = 'Код подтверждения';
$body = '<p><strong>«Hello, world!» </strong></p>';
if (!isset($params['address'])){
return false;
}
$this->mail->setFrom($this->mail->Username, $params['from_name'] ?? $this->mail->Host);
$this->mail->addAddress($params['address']);
$this->mail->Subject = $params['subject'] ?? 'Без темы';
$body = $params['body'] ?? 'Нет информации';
$this->mail->msgHTML($body);
$this->mail->send();

View File

@ -11,6 +11,7 @@ use kernel\helpers\Debug;
use kernel\helpers\Files;
use kernel\helpers\RESTClient;
use kernel\helpers\SMTP;
use kernel\Mailing;
use kernel\modules\module_shop_client\services\ModuleShopClientService;
use kernel\Request;
use kernel\services\ModuleService;
@ -127,14 +128,13 @@ class ModuleShopClientController extends AdminController
{
$request = new Request();
$address = $request->post("email");
$mail = new SMTP([
'host' => 'smtp.mail.ru',
'port' => 587,
'username' => 'chancellery@itguild.info',
'password' => 'iBdGdxmJk1mnySJYtXc0'
]);
$mail->send($address);
$mailing = new Mailing();
$mailing->send_html("login_by_code.php", ['code' => mt_rand(100000, 999999)], [
'address' => $address,
'subject' => "Код авторизации",
"from_name" => $_ENV['APP_NAME']
]);
}
}

View File

@ -0,0 +1,12 @@
<?php
/**
* @var int $code
*/
?>
<p>
Код подтверждения: <?= $code ?>
</p>
<p>
Если вы не запрашивали код, проигнорируйте данное письмо.
</p>