قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-22 06:57:53 +00:00

* Add token expiry warning email notification to scheduler * Add token expiry warning email notification to scheduler * add logic for -1 disable notification' * Fix spelling mistake * Fix some bugs around rendering the email * Update version * Refactor rotation code to use a standardised naming convention with new code * PHPStan * PHPCS fix * add test, not finished * finish off implementing test * Fix regression test failure * Update config to disable feature when set to 0 * update text to make more sense * Update token logic to more accurately determine when tokens are created * Update broken UI test * Add support for custom auth token expire date in UI and API (#23340) * Add support for custom auth token expire date in UI and API * Apply initial review feedback - require token expire date to be in future - refactor and simplify controller logic - remove unsude model method params - always display expire column in the list of tokens - pass default expiration to help text * Update config name to match emails-related work * Update UI test screenshot where expire date column is always visible * Update UI test screenshot with new global config options * Move initial expire date calculation to back-end * Use mock date for tests * Update UI tests * Update UI test screenshots * Update UI test screenshots * Move logic to override Tests.now to the Date class * Remove unused use statement * Update UI test screenshots * Tweak Date logic around Tests.now * Fix datepicker visibility * Add UI test for token expiration date picker * Fix 'label for a missing id' accessibility issue * Use custom fixture not to impact other tests * Fix CS * Fix fixture namespacing and use correct fixture in tests * Uncomment code commented out when debugging * Ensure initial date is set correctly for the date picker * Test config change to a different token expire interval * Update screenshot after config wording change * Remove unused function * Build vue components * Update expected screenshots * Remove obsolete comments * Allow numeric strings in Tests.now * Accept only values representing dates over 1990-01-01 in Tests.now * set date correctly for tests --------- Co-authored-by: Marc Neudert <marc@innocraft.com> Co-authored-by: sgiehl <stefan@matomo.org> --------- Co-authored-by: Nathan Gavin <nathangavin987@gmail.com> Co-authored-by: Marc Neudert <marc@innocraft.com> Co-authored-by: sgiehl <stefan@matomo.org>
112 خطوط
3.2 KiB
PHP
112 خطوط
3.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
namespace Piwik\Plugins\UsersManager\Emails;
|
|
|
|
use Piwik\Config;
|
|
use Piwik\Mail;
|
|
use Piwik\Piwik;
|
|
use Piwik\Plugins\UsersManager\TokenNotifications\AuthTokenExpirationWarningEmailNotification;
|
|
use Piwik\SettingsPiwik;
|
|
use Piwik\Url;
|
|
use Piwik\View;
|
|
|
|
class AuthTokenExpirationWarningNotificationEmail extends Mail
|
|
{
|
|
/**
|
|
* @var AuthTokenExpirationWarningEmailNotification
|
|
*/
|
|
private $notification;
|
|
|
|
/** @var string */
|
|
private $recipient;
|
|
|
|
/** @var array */
|
|
private $emailData;
|
|
|
|
public function __construct(
|
|
AuthTokenExpirationWarningEmailNotification $notification,
|
|
string $recipient,
|
|
array $emailData
|
|
) {
|
|
parent::__construct();
|
|
|
|
$this->notification = $notification;
|
|
$this->recipient = $recipient;
|
|
$this->emailData = $emailData;
|
|
|
|
$this->setUpEmail();
|
|
}
|
|
|
|
private function setUpEmail(): void
|
|
{
|
|
$this->setDefaultFromPiwik();
|
|
$this->addTo($this->recipient);
|
|
$this->setSubject($this->getDefaultSubject());
|
|
$this->addReplyTo($this->getFrom(), $this->getFromName());
|
|
$this->setBodyText($this->getDefaultBodyText());
|
|
$this->setWrappedHtmlBody($this->getDefaultBodyView());
|
|
}
|
|
|
|
private function getExpirationWarningPeriodPretty(): string
|
|
{
|
|
$expirationPeriodDays = Config::getInstance()->General['auth_token_expiration_notification_days'];
|
|
return $expirationPeriodDays . ' ' . Piwik::translate('Intl_PeriodDay' . ($expirationPeriodDays === 1 ? '' : 's'));
|
|
}
|
|
|
|
protected function getManageAuthTokensLink(): string
|
|
{
|
|
return SettingsPiwik::getPiwikUrl()
|
|
. 'index.php?'
|
|
. Url::getQueryStringFromParameters(['module' => 'UsersManager', 'action' => 'userSecurity'])
|
|
. '#authtokens';
|
|
}
|
|
protected function getDefaultSubject(): string
|
|
{
|
|
return Piwik::translate(
|
|
'UsersManager_AuthTokenExpirationWarningEmailSubject',
|
|
[
|
|
$this->getExpirationWarningPeriodPretty()
|
|
]
|
|
);
|
|
}
|
|
|
|
protected function getDefaultBodyText(): string
|
|
{
|
|
$view = new View('@UsersManager/_authTokenExpirationWarningNotificationTextEmail.twig');
|
|
$view->setContentType('text/plain');
|
|
|
|
$this->assignCommonParameters($view);
|
|
|
|
return $view->render();
|
|
}
|
|
|
|
protected function getDefaultBodyView(): View
|
|
{
|
|
$view = new View('@UsersManager/_authTokenExpirationWarningNotificationHtmlEmail.twig');
|
|
|
|
$this->assignCommonParameters($view);
|
|
|
|
return $view;
|
|
}
|
|
|
|
protected function assignCommonParameters(View $view): void
|
|
{
|
|
$view->tokenName = $this->notification->getTokenName();
|
|
$view->tokenExpirationDate = $this->notification->getTokenExpirationDate();
|
|
|
|
$view->expirationWarningPeriod = $this->getExpirationWarningPeriodPretty();
|
|
$view->manageAuthTokensLink = $this->getManageAuthTokensLink();
|
|
|
|
foreach ($this->emailData as $item => $value) {
|
|
$view->assign($item, $value);
|
|
}
|
|
}
|
|
}
|