]> git.immae.eu Git - github/wallabag/wallabag.git/blame - src/Wallabag/UserBundle/Mailer/AuthCodeMailer.php
Merge pull request #4021 from wallabag/doc/improve-contributing
[github/wallabag/wallabag.git] / src / Wallabag / UserBundle / Mailer / AuthCodeMailer.php
CommitLineData
23ff8d36
JB
1<?php
2
3namespace Wallabag\UserBundle\Mailer;
4
23ff8d36 5use Scheb\TwoFactorBundle\Mailer\AuthCodeMailerInterface;
f808b016 6use Scheb\TwoFactorBundle\Model\Email\TwoFactorInterface;
a2f4efe6 7use Twig\Environment;
23ff8d36
JB
8
9/**
10 * Custom mailer for TwoFactorBundle email.
11 * It adds a custom template to the email so user won't get a lonely authentication code but a complete email.
12 */
13class AuthCodeMailer implements AuthCodeMailerInterface
14{
15 /**
16 * SwiftMailer.
17 *
18 * @var \Swift_Mailer
19 */
20 private $mailer;
21
22 /**
7ce895bf 23 * Twig to render the html's email.
23ff8d36 24 *
ac5844a6 25 * @var Environment
23ff8d36 26 */
7ce895bf 27 private $twig;
23ff8d36
JB
28
29 /**
30 * Sender email address.
31 *
32 * @var string
33 */
34 private $senderEmail;
35
36 /**
37 * Sender name.
38 *
39 * @var string
40 */
41 private $senderName;
42
43 /**
44 * Support URL to report any bugs.
45 *
46 * @var string
47 */
48 private $supportUrl;
49
abd454c4 50 /**
855a4c68 51 * Url for the wallabag instance (only used for image in the HTML email template).
abd454c4
JB
52 *
53 * @var string
54 */
55 private $wallabagUrl;
56
23ff8d36
JB
57 /**
58 * Initialize the auth code mailer with the SwiftMailer object.
59 *
a2f4efe6
JB
60 * @param \Swift_Mailer $mailer
61 * @param Environment $twig
62 * @param string $senderEmail
63 * @param string $senderName
64 * @param string $supportUrl wallabag support url
65 * @param string $wallabagUrl wallabag instance url
23ff8d36 66 */
a2f4efe6 67 public function __construct(\Swift_Mailer $mailer, Environment $twig, $senderEmail, $senderName, $supportUrl, $wallabagUrl)
23ff8d36
JB
68 {
69 $this->mailer = $mailer;
7ce895bf 70 $this->twig = $twig;
23ff8d36
JB
71 $this->senderEmail = $senderEmail;
72 $this->senderName = $senderName;
4b3c983a
JB
73 $this->supportUrl = $supportUrl;
74 $this->wallabagUrl = $wallabagUrl;
23ff8d36
JB
75 }
76
77 /**
78 * Send the auth code to the user via email.
79 *
80 * @param TwoFactorInterface $user
81 */
a6b242a1 82 public function sendAuthCode(TwoFactorInterface $user): void
23ff8d36 83 {
855a4c68 84 $template = $this->twig->loadTemplate('WallabagUserBundle:TwoFactor:email_auth_code.html.twig');
7ce895bf 85
4094ea47 86 $subject = $template->renderBlock('subject', []);
7ce895bf
JB
87 $bodyHtml = $template->renderBlock('body_html', [
88 'user' => $user->getName(),
89 'code' => $user->getEmailAuthCode(),
abd454c4
JB
90 'support_url' => $this->supportUrl,
91 'wallabag_url' => $this->wallabagUrl,
7ce895bf
JB
92 ]);
93 $bodyText = $template->renderBlock('body_text', [
94 'user' => $user->getName(),
95 'code' => $user->getEmailAuthCode(),
abd454c4 96 'support_url' => $this->supportUrl,
7ce895bf
JB
97 ]);
98
23ff8d36
JB
99 $message = new \Swift_Message();
100 $message
43ccf4b1 101 ->setTo($user->getEmailAuthRecipient())
23ff8d36 102 ->setFrom($this->senderEmail, $this->senderName)
7ce895bf
JB
103 ->setSubject($subject)
104 ->setBody($bodyText, 'text/plain')
105 ->addPart($bodyHtml, 'text/html')
23ff8d36
JB
106 ;
107
108 $this->mailer->send($message);
109 }
110}