62 lines
1.8 KiB
PHP
62 lines
1.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file classes/mail/traits/OneClickReviewerAccess.php
|
|
*
|
|
* Copyright (c) 2014-2023 Simon Fraser University
|
|
* Copyright (c) 2000-2023 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class OneClickReviewerAccess
|
|
*
|
|
* @ingroup mail_traits
|
|
*
|
|
* @brief Mailable trait to override the review assignment URL with the
|
|
* secure, one-click access URL for reviewers
|
|
*/
|
|
|
|
namespace PKP\mail\traits;
|
|
|
|
use APP\core\Application;
|
|
use PKP\context\Context;
|
|
use PKP\mail\variables\ReviewAssignmentEmailVariable;
|
|
use PKP\security\AccessKeyManager;
|
|
use PKP\submission\reviewAssignment\ReviewAssignment;
|
|
|
|
trait OneClickReviewerAccess
|
|
{
|
|
protected function setOneClickAccessUrl(Context $context, ReviewAssignment $reviewAssignment): void
|
|
{
|
|
if (!$context->getData('reviewerAccessKeysEnabled')) {
|
|
return;
|
|
}
|
|
|
|
$application = Application::get();
|
|
$request = $application->getRequest();
|
|
$dispatcher = $application->getDispatcher();
|
|
|
|
$accessKeyManager = new AccessKeyManager();
|
|
$expiryDays = ($this->context->getData('numWeeksPerReview') + 4) * 7;
|
|
$accessKey = $accessKeyManager->createKey(
|
|
$context->getId(),
|
|
$reviewAssignment->getReviewerId(),
|
|
$reviewAssignment->getId(),
|
|
$expiryDays
|
|
);
|
|
|
|
$this->viewData[ReviewAssignmentEmailVariable::REVIEW_ASSIGNMENT_URL] = $dispatcher->url(
|
|
$request,
|
|
Application::ROUTE_PAGE,
|
|
$context->getData('urlPath'),
|
|
'reviewer',
|
|
'submission',
|
|
null,
|
|
[
|
|
'submissionId' => $reviewAssignment->getSubmissionId(),
|
|
'reviewId' => $reviewAssignment->getId(),
|
|
'key' => $accessKey,
|
|
]
|
|
);
|
|
}
|
|
}
|