Make sure one-click unsubscribe url won't redirect internally

[MAILPOET-4703]
This commit is contained in:
Sam Najian
2022-11-02 22:50:10 +01:00
committed by Aschepikov
parent 4fe8d10d6c
commit 50b613365f
3 changed files with 26 additions and 11 deletions

View File

@@ -5,6 +5,7 @@ namespace MailPoet\Cron\Workers\SendingQueue\Tasks;
use MailPoet\Cron\Workers\StatsNotifications\NewsletterLinkRepository;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\NewsletterLinkEntity;
use MailPoet\Entities\SubscriberEntity;
use MailPoet\Newsletter\Links\Links as NewsletterLinks;
use MailPoet\Router\Endpoints\Track;
use MailPoet\Router\Router;
@@ -68,12 +69,11 @@ class Links {
return $this->newsletterLinks->save($links, $newsletter->getId(), $queue->id);
}
public function getUnsubscribeUrl($queue, $subscriberId) {
$subscriber = $this->subscribersRepository->findOneById($subscriberId);
public function getUnsubscribeUrl($queueId, SubscriberEntity $subscriber = null) {
if ($this->trackingConfig->isEmailTrackingEnabled() && $subscriber) {
$linkHash = $this->newsletterLinkRepository->findOneBy(
[
'queue' => $queue->id,
'queue' => $queueId,
'url' => NewsletterLinkEntity::INSTANT_UNSUBSCRIBE_LINK_SHORT_CODE,
]
);
@@ -84,7 +84,7 @@ class Links {
$data = $this->newsletterLinks->createUrlDataObject(
$subscriber->getId(),
$this->linkTokens->getToken($subscriber),
$queue->id,
$queueId,
$linkHash->getHash(),
false
);
@@ -95,8 +95,13 @@ class Links {
);
} else {
$subscriptionUrlFactory = SubscriptionUrlFactory::getInstance();
$url = $subscriptionUrlFactory->getUnsubscribeUrl($subscriber, $queue->id);
$url = $subscriptionUrlFactory->getUnsubscribeUrl($subscriber, $queueId);
}
return $url;
}
public function getOneClickUnsubscribeUrl($queueId, SubscriberEntity $subscriber): string {
$subscriptionUrlFactory = SubscriptionUrlFactory::getInstance();
return $subscriptionUrlFactory->getUnsubscribeUrl($subscriber, $queueId);
}
}