Require that subscriber received a newsletter only for non-preview links

[MAILPOET-2761]
This commit is contained in:
Jan Jakeš
2020-03-19 15:24:49 +01:00
committed by Veljko V
parent 31fc05dbfd
commit 2b1444dd53
2 changed files with 1 additions and 38 deletions

View File

@ -2,7 +2,6 @@
namespace MailPoet\Newsletter\ViewInBrowser;
use MailPoet\Config\AccessControl;
use MailPoet\Models\Newsletter;
use MailPoet\Models\SendingQueue;
use MailPoet\Models\Subscriber;
@ -10,9 +9,6 @@ use MailPoet\Newsletter\Url as NewsletterUrl;
use MailPoet\Subscribers\LinkTokens;
class ViewInBrowserController {
/** @var AccessControl */
private $accessControl;
/** @var LinkTokens */
private $linkTokens;
@ -20,11 +16,9 @@ class ViewInBrowserController {
private $viewInBrowserRenderer;
public function __construct(
AccessControl $accessControl,
LinkTokens $linkTokens,
ViewInBrowserRenderer $viewInBrowserRenderer
) {
$this->accessControl = $accessControl;
$this->linkTokens = $linkTokens;
$this->viewInBrowserRenderer = $viewInBrowserRenderer;
}
@ -41,12 +35,9 @@ class ViewInBrowserController {
$subscriber = Subscriber::getCurrentWPUser() ?: null;
}
// allow users with permission to manage emails to preview any newsletter
$canView = $isPreview && $this->accessControl->validatePermission(AccessControl::PERMISSION_MANAGE_EMAILS);
// if queue and subscriber exist, subscriber must have received the newsletter
$queue = $this->getQueue($newsletter, $data);
if (!$canView && $queue && $subscriber && !$queue->isSubscriberProcessed($subscriber->id)) {
if (!$isPreview && $queue && $subscriber && !$queue->isSubscriberProcessed($subscriber->id)) {
throw new \InvalidArgumentException("Subscriber did not receive the newsletter yet");
}