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