From a2779ee6b8671d5bf8904572f8190e2d7cdb874d Mon Sep 17 00:00:00 2001 From: Geidson Benicio Coelho Date: Fri, 31 Mar 2023 10:54:31 -0300 Subject: [PATCH] Adiciona o comando PurgeCommand e resolve modelo RefreshToken --- src/Console/PurgeCommand.php | 37 +++++++++++++++++++ src/MongodbPassportServiceProvider.php | 8 ++++ .../Bridge/RefreshTokenRepository.php | 3 +- src/Passport/RefreshToken.php | 3 +- 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/Console/PurgeCommand.php diff --git a/src/Console/PurgeCommand.php b/src/Console/PurgeCommand.php new file mode 100644 index 0000000..ad6f6f9 --- /dev/null +++ b/src/Console/PurgeCommand.php @@ -0,0 +1,37 @@ +subDays(7); + + if (($this->option('revoked') && $this->option('expired')) || + (!$this->option('revoked') && !$this->option('expired')) + ) { + Passport::token()->where('revoked', true)->orWhere('expires_at', '<', $expired)->delete(); + Passport::authCode()->where('revoked', true)->orWhere('expires_at', '<', $expired)->delete(); + Passport::refreshToken()->where('revoked', true)->orWhere('expires_at', '<', $expired)->delete(); + + $this->info('Purged revoked items and items expired for more than seven days.'); + } elseif ($this->option('revoked')) { + Passport::token()->where('revoked', true)->delete(); + Passport::authCode()->where('revoked', true)->delete(); + Passport::refreshToken()->where('revoked', true)->delete(); + + $this->info('Purged revoked items.'); + } elseif ($this->option('expired')) { + Passport::token()->where('expires_at', '<', $expired)->delete(); + Passport::authCode()->where('expires_at', '<', $expired)->delete(); + Passport::refreshToken()->where('expires_at', '<', $expired)->delete(); + + $this->info('Purged items expired for more than seven days.'); + } + } +} diff --git a/src/MongodbPassportServiceProvider.php b/src/MongodbPassportServiceProvider.php index fb2c6a5..a81f320 100644 --- a/src/MongodbPassportServiceProvider.php +++ b/src/MongodbPassportServiceProvider.php @@ -11,8 +11,11 @@ use Sysvale\Mongodb\Passport\Token; use Laravel\Passport\Bridge\RefreshTokenRepository as PassportRefreshTokenRepository; use Laravel\Passport\Console\ClientCommand as PassportClientCommand; +use Laravel\Passport\Console\PurgeCommand as PassportPurgeCommand; use Laravel\Passport\Passport; use Laravel\Passport\TokenRepository as PassportTokenRepository; +use Sysvale\Mongodb\Console\PurgeCommand; +use Sysvale\Mongodb\Passport\RefreshToken; use Sysvale\Mongodb\Passport\TokenRepository; class MongodbPassportServiceProvider extends ServiceProvider @@ -26,6 +29,7 @@ public function register() Passport::useClientModel(Client::class); Passport::usePersonalAccessClientModel(PersonalAccessClient::class); Passport::useTokenModel(Token::class); + Passport::useRefreshTokenModel(RefreshToken::class); $this->app->bind(PassportRefreshTokenRepository::class, function () { return $this->app->make(RefreshTokenRepository::class); @@ -35,6 +39,10 @@ public function register() return new ClientCommand(); }); + $this->app->extend(PassportPurgeCommand::class, function () { + return new PurgeCommand(); + }); + $this->app->bind(PassportTokenRepository::class, function () { return $this->app->make(TokenRepository::class); }); diff --git a/src/Passport/Bridge/RefreshTokenRepository.php b/src/Passport/Bridge/RefreshTokenRepository.php index c74f19f..261f9bc 100644 --- a/src/Passport/Bridge/RefreshTokenRepository.php +++ b/src/Passport/Bridge/RefreshTokenRepository.php @@ -4,6 +4,7 @@ use Laravel\Passport\Bridge\RefreshTokenRepository as BaseRefreshTokenRepository; use Laravel\Passport\Events\RefreshTokenCreated; +use Laravel\Passport\Passport; use League\OAuth2\Server\Entities\RefreshTokenEntityInterface; /** @@ -17,7 +18,7 @@ class RefreshTokenRepository extends BaseRefreshTokenRepository */ public function getNewRefreshToken() { - return new RefreshToken(); + return Passport::refreshToken(); } /** diff --git a/src/Passport/RefreshToken.php b/src/Passport/RefreshToken.php index c72ca29..ce69bd9 100644 --- a/src/Passport/RefreshToken.php +++ b/src/Passport/RefreshToken.php @@ -3,8 +3,9 @@ namespace Sysvale\Mongodb\Passport; use Jenssegers\Mongodb\Eloquent\Model; +use Sysvale\Mongodb\Passport\Bridge\RefreshToken as BridgeRefreshToken; -class RefreshToken extends Model +class RefreshToken extends BridgeRefreshToken { /** * The database table used by the model.