ApplicantPortal/app/mules/JWTCleanMule.py
2025-03-12 20:43:26 -06:00

29 lines
1.1 KiB
Python

from app import create_app
from app import model
from datetime import datetime
from app.mules.mule import MuleBase
class JWTCleanupMule(MuleBase):
def __init__(self):
app = create_app()
self.jwt_exp_time = app.config.get('JWT_ACCESS_TOKEN_EXPIRES')
super().__init__('JWTCleanupMule', app.logger, app.config.get('JWT_CLEANUP_MULE_SLEEP_SECS', 10))
def loop(self):
oldest_allowed = datetime.utcnow() - self.jwt_exp_time
self.logger.info(f'Searching for JWT access tokens revoked at or before {oldest_allowed.strftime("%Y %m %d %H:%M:%S")}...')
to_remove = model.BlackListedJWT.objects(created_at__lt=oldest_allowed).all()
self.logger.info(f'Found {len(to_remove)} expired JWT access tokens to remove')
for idx, jwt in enumerate(to_remove):
self.logger.debug(f'Removing expired JWT {idx + 1}/{len(to_remove)}')
try:
jwt.delete()
except Exception as ex:
self.logger.error(f'Failed to remove JWT (exception={str(ex)}).')
if __name__ == '__main__':
mule = JWTCleanupMule()
mule()