From 5ec5195d894a6cdfc5fb2d8746c929077b7a553a Mon Sep 17 00:00:00 2001 From: essae Date: Sat, 24 May 2025 20:06:33 -0400 Subject: [PATCH] feat(email): implement secure unsubscribe link generator and email helper integration --- app/Utilities/EmailHelper.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/Utilities/EmailHelper.php b/app/Utilities/EmailHelper.php index 62f4a3b..2e57a5f 100644 --- a/app/Utilities/EmailHelper.php +++ b/app/Utilities/EmailHelper.php @@ -11,6 +11,8 @@ namespace WizdomNetworks\WizeWeb\Utilities; use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; +use WizdomNetworks\WizeWeb\Services\TokenService; +use WizdomNetworks\WizeWeb\Services\UnsubscribeTokenService; class EmailHelper { @@ -154,4 +156,20 @@ class EmailHelper return ''; } } + /** + * Generate a secure unsubscribe link for a subscriber email. + * + * @param string $email + * @return string + */ + public static function buildUnsubscribeLink(string $email): string + { + $ts = time(); + $tokenService = new TokenService(); + $unsubscribeTokenService = new UnsubscribeTokenService($tokenService); + + $sig = $unsubscribeTokenService->generate($email, $ts); + + return $_ENV['APP_URL'] . "/unsubscribe?email=" . urlencode($email) . "&ts=$ts&sig=$sig"; + } }