mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-19 05:12:19 +02:00
Preserve preview harness, editor, email and task improvements
Snapshot current maintainer-preview application changes and regression fixtures for integration into lab. Excludes local runtime data, evaluation outputs and source backups. Focused Python regression selection: 140 passed; full suite not certified.
This commit is contained in:
@@ -465,6 +465,19 @@ class AuthManager:
|
||||
logger.info("Set is_admin=%s for '%s' (by '%s')", is_admin, username, requesting_user)
|
||||
return SetAdminResult.OK
|
||||
|
||||
def reset_user_password(self, username: str, new_password: str, requesting_user: str) -> bool:
|
||||
"""Allow an admin to reset a non-admin account and revoke its sessions."""
|
||||
username = username.strip().lower()
|
||||
with self._config_lock:
|
||||
target = self.users.get(username)
|
||||
if not self.is_admin(requesting_user) or not target or target.get("is_admin"):
|
||||
return False
|
||||
self._config["users"][username]["password_hash"] = _hash_password(new_password)
|
||||
self._save()
|
||||
self.revoke_user_sessions(username)
|
||||
logger.info("Password reset for '%s' by '%s'", username, requesting_user)
|
||||
return True
|
||||
|
||||
def change_password(self, username: str, current_password: str, new_password: str) -> bool:
|
||||
username = username.strip().lower()
|
||||
if username not in self.users:
|
||||
|
||||
@@ -612,13 +612,16 @@ class SessionManager:
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
def delete_session(self, session_id: str) -> bool:
|
||||
def delete_session(self, session_id: str, *, delete_images: bool = False) -> bool:
|
||||
"""Permanently delete a session and all its messages."""
|
||||
db = SessionLocal()
|
||||
try:
|
||||
try:
|
||||
from src.session_image_cleanup import cleanup_session_images
|
||||
cleanup_session_images(session_id, db=db)
|
||||
from src.session_image_cleanup import cleanup_session_images, preserve_session_images
|
||||
if delete_images:
|
||||
cleanup_session_images(session_id, db=db)
|
||||
else:
|
||||
preserve_session_images(session_id, db=db)
|
||||
except Exception as e:
|
||||
logger.warning(f"Image cleanup failed while deleting session {session_id}: {e}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user