password reset
This commit is contained in:
41
tasks.py
41
tasks.py
@@ -1,5 +1,5 @@
|
||||
from datetime import datetime, timedelta
|
||||
from models import db, RoomFile
|
||||
from models import db, RoomFile, PasswordResetToken, PasswordSetupToken
|
||||
import os
|
||||
|
||||
def cleanup_trash():
|
||||
@@ -36,4 +36,43 @@ def cleanup_trash():
|
||||
db.session.commit()
|
||||
except Exception as e:
|
||||
print(f"Error committing changes: {str(e)}")
|
||||
db.session.rollback()
|
||||
|
||||
def cleanup_expired_tokens():
|
||||
"""
|
||||
Removes expired password reset and setup tokens from the database.
|
||||
This function should be called by a scheduler (e.g., cron job) daily.
|
||||
"""
|
||||
current_time = datetime.utcnow()
|
||||
|
||||
# Clean up expired password reset tokens
|
||||
expired_reset_tokens = PasswordResetToken.query.filter(
|
||||
PasswordResetToken.expires_at < current_time
|
||||
).all()
|
||||
|
||||
for token in expired_reset_tokens:
|
||||
try:
|
||||
db.session.delete(token)
|
||||
except Exception as e:
|
||||
print(f"Error deleting expired password reset token {token.id}: {str(e)}")
|
||||
continue
|
||||
|
||||
# Clean up expired password setup tokens
|
||||
expired_setup_tokens = PasswordSetupToken.query.filter(
|
||||
PasswordSetupToken.expires_at < current_time
|
||||
).all()
|
||||
|
||||
for token in expired_setup_tokens:
|
||||
try:
|
||||
db.session.delete(token)
|
||||
except Exception as e:
|
||||
print(f"Error deleting expired password setup token {token.id}: {str(e)}")
|
||||
continue
|
||||
|
||||
# Commit all changes
|
||||
try:
|
||||
db.session.commit()
|
||||
print(f"Cleaned up {len(expired_reset_tokens)} expired password reset tokens and {len(expired_setup_tokens)} expired password setup tokens")
|
||||
except Exception as e:
|
||||
print(f"Error committing token cleanup changes: {str(e)}")
|
||||
db.session.rollback()
|
||||
Reference in New Issue
Block a user