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:
pewdiepie-archdaemon
2026-10-01 01:34:26 +00:00
parent 86f376ac3a
commit 2e8413a54a
170 changed files with 11010 additions and 1094 deletions
+13
View File
@@ -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: