قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-21 22:47:43 +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>
65 خطوط
1.9 KiB
PHP
65 خطوط
1.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
namespace Piwik\Plugins\UsersManager\TokenNotifications;
|
|
|
|
use Piwik\Common;
|
|
use Piwik\Config;
|
|
use Piwik\Date;
|
|
use Piwik\Db;
|
|
|
|
class TokenExpirationWarningNotificationProvider extends TokenNotificationProvider
|
|
{
|
|
protected function getPeriodThreshold(): ?string
|
|
{
|
|
$periodDays = (int) Config::getInstance()->General['auth_token_expiration_notification_days'];
|
|
return ($periodDays > 0) ? Date::factory('today')->addDay($periodDays)->getDateTime() : null;
|
|
}
|
|
|
|
protected function getTokensToNotify(string $periodThreshold): array
|
|
{
|
|
$db = Db::get();
|
|
$sql = "SELECT * FROM " . Common::prefixTable('user_token_auth')
|
|
. " WHERE date_expired IS NOT null"
|
|
. " AND (date_expired <= ?)"
|
|
. " AND (date_created <= ?)"
|
|
. " AND ts_expiration_warning_notified IS NULL"
|
|
. " AND system_token = 0"
|
|
. " AND login != ?";
|
|
|
|
$tokensToNotify = $db->fetchAll($sql, [
|
|
$periodThreshold,
|
|
$this->today,
|
|
'anonymous'
|
|
]);
|
|
|
|
return $tokensToNotify;
|
|
}
|
|
|
|
protected function createNotification(array $token): TokenNotification
|
|
{
|
|
$user = $this->userModel->getUser($token['login']);
|
|
$email = $user['email'];
|
|
|
|
return new AuthTokenExpirationWarningEmailNotification(
|
|
$token['idusertokenauth'],
|
|
$token['description'],
|
|
$token['date_created'],
|
|
[$email],
|
|
[$email => ['login' => $token['login']]],
|
|
$token['date_expired']
|
|
);
|
|
}
|
|
|
|
public function setTokenNotificationDispatched(string $tokenId): void
|
|
{
|
|
$this->userModel->setExpirationWarningNotificationWasSentForToken($tokenId, Date::factory('now')->getDatetime());
|
|
}
|
|
}
|