password reset

This commit is contained in:
2025-06-19 16:11:42 +02:00
parent efdb6d50c3
commit 7092167001
20 changed files with 680 additions and 72 deletions

View File

@@ -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()