From 7d13be6052645ffaef56da62effe61d70709a774 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Thu, 1 Jan 2026 21:27:21 +0100 Subject: [PATCH] fix: use uuid field instead of pk for Authentik user sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- CHANGELOG.md | 7 +++++++ pyproject.toml | 2 +- src/auth/service.py | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfb4d12..2dab338 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.4.4] - 2026-01-01 + +### Fixed + +- Use `uuid` field instead of `pk` for Authentik user sync (pk is integer, uuid is proper UUID) +- Skip internal_service_account type users during bulk sync + ## [1.4.3] - 2026-01-01 ### Fixed diff --git a/pyproject.toml b/pyproject.toml index ac3c400..c603e46 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "core-api" -version = "1.4.3" +version = "1.4.4" description = "Core Code API - Infrastructure management and tools API" readme = "README.md" requires-python = ">=3.12" diff --git a/src/auth/service.py b/src/auth/service.py index fd3f3c1..63ab50a 100644 --- a/src/auth/service.py +++ b/src/auth/service.py @@ -396,13 +396,13 @@ class AuthService: for auth_user in authentik_users: try: # Skip service accounts and inactive users - if auth_user.get("type") == "service_account": + if auth_user.get("type") in ("service_account", "internal_service_account"): continue if not auth_user.get("is_active", True): continue # Extract user data from Authentik - authentik_id = uuid.UUID(auth_user["pk"]) + authentik_id = uuid.UUID(auth_user["uuid"]) email = auth_user.get("email") or f"{auth_user['username']}@local" name = auth_user.get("name") or auth_user.get("username", "Unknown") avatar_url = auth_user.get("avatar")