Add reviewed duplicate account consolidation and prevent duplicate imports
Magent CI/CD / verify (push) Successful in 11m16s
Magent CI/CD / deploy-prod (push) Skipped
Magent CI/CD / deploy-beta (push) Successful in 1m33s

This commit is contained in:
2026-09-11 16:38:53 +12:00
parent df6fe58278
commit 52c85daae3
10 changed files with 562 additions and 2 deletions
+24
View File
@@ -3,6 +3,7 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator
from ..auth import require_admin
from ..services.identity_review import confirm_identities, review_identities, resolve_identity, repair_identity
from ..services.duplicate_accounts import repair_duplicates
router = APIRouter(prefix="/admin/identities", tags=["admin"], dependencies=[Depends(require_admin)])
@@ -73,3 +74,26 @@ async def check_repair(payload: RepairResolution, response: Response):
async def confirm_repair(payload: RepairConfirmation, response: Response, admin: dict = Depends(require_admin)):
response.headers['Cache-Control'] = 'no-store'
return await repair_identity(payload.user_id, payload.jellyfin_user_id, payload.revision, admin, payload.create_seerr)
class DuplicateCheck(BaseModel):
model_config = ConfigDict(extra='forbid')
user_id: int = Field(gt=0, strict=True)
keep_id: int | None = Field(default=None, gt=0, strict=True)
class DuplicateConfirmation(DuplicateCheck):
keep_id: int = Field(gt=0, strict=True)
revision: str = Field(pattern=r'^[a-f0-9]{64}$')
@router.post('/duplicates/check')
async def check_duplicates(payload: DuplicateCheck, response: Response):
response.headers['Cache-Control'] = 'no-store'
return await repair_duplicates(payload.user_id, payload.keep_id)
@router.post('/duplicates/confirm')
async def confirm_duplicates(payload: DuplicateConfirmation, response: Response, admin: dict = Depends(require_admin)):
response.headers['Cache-Control'] = 'no-store'
return await repair_duplicates(payload.user_id, payload.keep_id, payload.revision, admin)