From e8fab60d89bdc37bc07aaeff7a5e91829d45f53f Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Sat, 3 Jan 2026 18:21:04 -0300 Subject: [PATCH] vaultwarden: skip reinvite when status set --- scripts/vaultwarden_cred_sync.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/scripts/vaultwarden_cred_sync.py b/scripts/vaultwarden_cred_sync.py index 3850249..5dbf22f 100644 --- a/scripts/vaultwarden_cred_sync.py +++ b/scripts/vaultwarden_cred_sync.py @@ -125,15 +125,25 @@ def main() -> int: skipped += 1 continue - current_status = _extract_attr(user.get("attributes"), VAULTWARDEN_STATUS_ATTR) - email = _vaultwarden_email_for_user(user) + # Fetch the full user payload so we can reliably read attributes (and skip re-invites). + user_id = (user.get("id") if isinstance(user.get("id"), str) else "") or "" + user_id = user_id.strip() + full_user = user + if user_id: + try: + full_user = admin_client().get_user(user_id) + except Exception: + full_user = user + + current_status = _extract_attr(full_user.get("attributes"), VAULTWARDEN_STATUS_ATTR) + email = _vaultwarden_email_for_user(full_user) if not email: print(f"skip {username}: missing email", file=sys.stderr) skipped += 1 continue try: - _set_user_attribute_if_missing(username, user, VAULTWARDEN_EMAIL_ATTR, email) + _set_user_attribute_if_missing(username, full_user, VAULTWARDEN_EMAIL_ATTR, email) except Exception: pass