modernize oauth token handling
This commit is contained in:
11 files changed
+600
-191
No files matched your search
@@ -5,6 +5,8 @@ use SokoWeb\Database\Query\Modify;
|
||||
use SokoWeb\Database\Query\Select;
|
||||
use SokoWeb\Interfaces\Database\IResultSet;
|
||||
use RVR\Repository\UserPasswordResetterRepository;
|
||||
use RVR\Repository\OAuthTokenRepository;
|
||||
use RVR\Repository\OAuthSessionRepository;
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
@@ -13,11 +15,17 @@ class MaintainDatabaseCommand extends Command
|
||||
{
|
||||
private UserPasswordResetterRepository $userPasswordResetterRepository;
|
||||
|
||||
private OAuthTokenRepository $oauthTokenRepository;
|
||||
|
||||
private OAuthSessionRepository $oauthSessionRepository;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
$this->userPasswordResetterRepository = new UserPasswordResetterRepository();
|
||||
$this->oauthTokenRepository = new OAuthTokenRepository();
|
||||
$this->oauthSessionRepository = new OAuthSessionRepository();
|
||||
}
|
||||
|
||||
public function configure(): void
|
||||
@@ -31,6 +39,8 @@ class MaintainDatabaseCommand extends Command
|
||||
try {
|
||||
$this->deleteExpiredPasswordResetters();
|
||||
$this->deleteExpiredSessions();
|
||||
$this->deleteExpiredOauthTokens();
|
||||
$this->deleteExpiredOauthSessions();
|
||||
} catch (\Exception $e) {
|
||||
$output->writeln('<error>Maintenance failed!</error>');
|
||||
$output->writeln('');
|
||||
@@ -69,4 +79,21 @@ class MaintainDatabaseCommand extends Command
|
||||
$modify->delete();
|
||||
}
|
||||
}
|
||||
|
||||
private function deleteExpiredOauthTokens(): void
|
||||
{
|
||||
foreach ($this->oauthTokenRepository->getAllExpired() as $oauthToken) {
|
||||
\Container::$persistentDataManager->deleteFromDb($oauthToken);
|
||||
}
|
||||
}
|
||||
|
||||
private function deleteExpiredOauthSessions(): void
|
||||
{
|
||||
foreach ($this->oauthSessionRepository->getAllExpired() as $oauthSession) {
|
||||
if ($this->oauthTokenRepository->countAllBySession($oauthSession) > 0) {
|
||||
continue;
|
||||
}
|
||||
\Container::$persistentDataManager->deleteFromDb($oauthSession);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user