endpoints/track: Exit with 403 code and eventually display 403 page when subscriber token doesn't match [MAILPOET-782]
This commit is contained in:
@ -65,7 +65,9 @@ class Track {
|
||||
if(!$data->subscriber || !$data->queue || !$data->newsletter) return false;
|
||||
$subscriber_token_match =
|
||||
Subscriber::verifyToken($data->subscriber->email, $data->subscriber_token);
|
||||
if(!$subscriber_token_match) return false;
|
||||
if(!$subscriber_token_match) {
|
||||
$this->terminate(403);
|
||||
}
|
||||
// return if this is a WP user previewing the newsletter
|
||||
if($data->subscriber->isWPUser() && $data->preview) {
|
||||
return $data;
|
||||
@ -75,4 +77,10 @@ class Track {
|
||||
$data :
|
||||
false;
|
||||
}
|
||||
|
||||
private function terminate($code) {
|
||||
status_header($code);
|
||||
get_template_part((string)$code);
|
||||
exit;
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace MailPoet\Test\Router\Endpoints;
|
||||
|
||||
use AspectMock\Test as Mock;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\NewsletterLink;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
@ -69,7 +70,9 @@ class TrackTest extends \MailPoetTest {
|
||||
)
|
||||
);
|
||||
$data->subscriber->email = 'random@email.com';
|
||||
expect($this->track->_validateTrackData($data))->false();
|
||||
$track = Mock::double($this->track, array('terminate' => null));
|
||||
$track->_validateTrackData($data);
|
||||
$track->verifyInvokedOnce('terminate', array(403));
|
||||
}
|
||||
|
||||
function testItFailsWhenSubscriberIsNotOnProcessedList() {
|
||||
|
Reference in New Issue
Block a user