Skip to content

Add user merge endpoint and UI (Zusammenführen von Kunden)#4

Draft
Copilot wants to merge 2 commits into
mainfrom
copilot/zusammenfuehren-von-kunden
Draft

Add user merge endpoint and UI (Zusammenführen von Kunden)#4
Copilot wants to merge 2 commits into
mainfrom
copilot/zusammenfuehren-von-kunden

Conversation

Copilot AI commented Mar 30, 2026

Copy link
Copy Markdown

Admins need the ability to consolidate duplicate user accounts, transferring all associated data to a target user and soft-deleting the source.

Backend — POST /api/v1/admin/users/{user_id}/merge

{ "source_user_id": 42 }

Transfers from source → target user:

  • Sessions, API keys, OAuth identities
  • Spool events, filament ratings (conflict resolution: keep target's rating when both rated the same filament)
  • Roles (union, deduplicated)

Guards:

  • admin:users_manage permission required
  • Rejects self-merge (400)
  • Rejects merging the last superadmin as source (400)
  • Returns UserDetailResponse of the updated target

Frontend — Admin Users page

  • Merge button added to each row (hidden for self)
  • Modal shows source user (read-only) + dropdown of eligible target users
  • Confirmation dialog before execution

i18n

New keys added to both en.json and de.json under admin.* (mergeUser, mergeUserTitle, mergeUserDesc, mergeConfirm, etc.).

Tests

tests/test_merge_users.py covers: successful merge + data transfer, self-merge rejection, missing source/target (404), permission enforcement, last-superadmin guard, and role deduplication.

Original prompt

zusammen führen von kunden


🔒 GitHub Advanced Security automatically protects Copilot coding agent pull requests. You can protect all pull requests by enabling Advanced Security for your repositories. Learn more about Advanced Security.

Copilot AI changed the title [WIP] Merge customer data for improved insights Add user merge endpoint and UI (Zusammenführen von Kunden) Mar 30, 2026
Copilot AI requested a review from Janez76 March 30, 2026 02:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants