mirror of
https://github.com/elyby/accounts.git
synced 2025-05-31 14:11:46 +05:30
Добавлен функционал очистки устаревших AccountSessions
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace console\controllers;
|
||||
|
||||
use common\models\AccountSession;
|
||||
use common\models\EmailActivation;
|
||||
use common\models\MinecraftAccessKey;
|
||||
use yii\console\Controller;
|
||||
@@ -40,6 +41,28 @@ class CleanupController extends Controller {
|
||||
return self::EXIT_CODE_NORMAL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Нужно удалить те сессии, которые не рефрешились 90 дней,
|
||||
* а также сессии, которые ни разу не рефрешились с момента своей выписки
|
||||
* более чем 2 недели назад.
|
||||
*
|
||||
* У модели AccountSession нет внешних связей, так что целевые записи
|
||||
* могут быть удалены без использования циклов.
|
||||
*/
|
||||
public function actionWebSessions() {
|
||||
AccountSession::deleteAll([
|
||||
'OR',
|
||||
['<', 'last_refreshed_at', time() - 7776000], // 90 days
|
||||
[
|
||||
'AND',
|
||||
'created_at = last_refreshed_at',
|
||||
['<', 'created_at', time() - 1209600], // 2 weeks
|
||||
],
|
||||
]);
|
||||
|
||||
return self::EXIT_CODE_NORMAL;
|
||||
}
|
||||
|
||||
private function getEmailActivationsDurationsMap(): array {
|
||||
$durationsMap = [];
|
||||
foreach (EmailActivation::getClassMap() as $typeId => $className) {
|
||||
|
||||
Reference in New Issue
Block a user