django-clerk-users 0.1.1__py3-none-any.whl → 0.1.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,9 @@ def update_or_create_clerk_user(
28
28
  Update or create a Django user from Clerk data.
29
29
 
30
30
  Fetches user data from the Clerk API and creates or updates
31
- the corresponding Django user.
31
+ the corresponding Django user. If a user with the same email
32
+ already exists (e.g., a superuser created via createsuperuser),
33
+ it will be linked to the Clerk ID rather than creating a duplicate.
32
34
 
33
35
  Args:
34
36
  clerk_user_id: The Clerk user ID.
@@ -70,17 +72,42 @@ def update_or_create_clerk_user(
70
72
 
71
73
  # Prepare user data
72
74
  user_data = {
73
- "email": primary_email,
74
75
  "first_name": getattr(clerk_user, "first_name", "") or "",
75
76
  "last_name": getattr(clerk_user, "last_name", "") or "",
76
77
  "image_url": getattr(clerk_user, "image_url", "") or "",
77
78
  }
78
79
 
79
- # Update or create the Django user
80
- user, created = User.objects.update_or_create(
81
- clerk_id=clerk_user_id,
82
- defaults=user_data,
83
- )
80
+ # First, try to find by clerk_id
81
+ user = User.objects.filter(clerk_id=clerk_user_id).first()
82
+ created = False
83
+
84
+ if user:
85
+ # Update existing Clerk-linked user
86
+ for key, value in user_data.items():
87
+ setattr(user, key, value)
88
+ user.email = primary_email
89
+ user.save()
90
+ else:
91
+ # No user with this clerk_id - check if email already exists
92
+ user = User.objects.filter(email__iexact=primary_email).first()
93
+
94
+ if user:
95
+ # Link existing Django user to Clerk
96
+ user.clerk_id = clerk_user_id
97
+ for key, value in user_data.items():
98
+ setattr(user, key, value)
99
+ user.save()
100
+ logger.info(
101
+ f"Linked existing user {user.email} to Clerk ID {clerk_user_id}"
102
+ )
103
+ else:
104
+ # Create new user
105
+ user = User.objects.create(
106
+ clerk_id=clerk_user_id,
107
+ email=primary_email,
108
+ **user_data,
109
+ )
110
+ created = True
84
111
 
85
112
  # Update cache
86
113
  set_cached_user(clerk_user_id, user)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-clerk-users
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Integrate Clerk with Django
5
5
  Project-URL: Changelog, https://github.com/jmitchel3/django-clerk-users
6
6
  Project-URL: Documentation, https://github.com/jmitchel3/django-clerk-users
@@ -9,7 +9,7 @@ django_clerk_users/managers.py,sha256=HvSkGeiQhjA6EFXrW4GTlxXtlRDtlT54BbwbvnNuOW
9
9
  django_clerk_users/models.py,sha256=DMcEnGNioGX5xsP4U47ich1L_UoZNAFEDb-vZVVV8Tk,5210
10
10
  django_clerk_users/settings.py,sha256=pRyt_kSPWOT8CkTvyce3sf0RxfIoG5DEwnGUT8bIDi8,1305
11
11
  django_clerk_users/testing.py,sha256=ZoYi7dG_HjSp19_c1AvILOoCfHlofs7LN-5ALS_UhDw,12160
12
- django_clerk_users/utils.py,sha256=bQWfPUKfVvXi69Ctny1T1Kxzk-qMDpXQBRVa6URH53I,5886
12
+ django_clerk_users/utils.py,sha256=OMB2OCv-SUk6iAbWU6NPo-Psq63dcVJRSDTkAICFNmY,7002
13
13
  django_clerk_users/authentication/__init__.py,sha256=PStQVzC-CA2Guyo4ksrxP58o93mfygW4qcJXWEjs6ak,614
14
14
  django_clerk_users/authentication/backends.py,sha256=bDJ2mEO66xhcJPc6f-jYa3F9x-PJ4RJrm9GD-pCTo6Y,2855
15
15
  django_clerk_users/authentication/drf.py,sha256=AqHvZTe9RnxN7FVzlSUXR72QBj2imGglkx9rpOrRDIk,3215
@@ -37,7 +37,7 @@ django_clerk_users/webhooks/handlers.py,sha256=GnotJNhN809DsrbfZjtJD0KurThKyAXZS
37
37
  django_clerk_users/webhooks/security.py,sha256=Ig2ZxF8SxX5o-4bNRehFhip4hVvcQxoGsTj3sTY3WSU,3461
38
38
  django_clerk_users/webhooks/signals.py,sha256=bytshg7IMDnlvnCZ0_TGjUXZZLRNxtn2RSx97qacZ-w,1668
39
39
  django_clerk_users/webhooks/views.py,sha256=0-ilzzO7tBfc-pENMy0ZSSkQ4uPqH2QAt249EK2wQKA,2287
40
- django_clerk_users-0.1.1.dist-info/METADATA,sha256=8wVBDTc-ndo9AlgsDuoxglUmzS1SfV4tM3E0iHgP5jk,8687
41
- django_clerk_users-0.1.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
42
- django_clerk_users-0.1.1.dist-info/licenses/LICENSE,sha256=X4PZDRQG4RmPhHU5c0G21Ki9LXWDCuLQ8W4mnED5RDU,1071
43
- django_clerk_users-0.1.1.dist-info/RECORD,,
40
+ django_clerk_users-0.1.2.dist-info/METADATA,sha256=FXGQeLLxETfuOZb53Zn-m4tbXonJDjldPgjx0z6TsRY,8687
41
+ django_clerk_users-0.1.2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
42
+ django_clerk_users-0.1.2.dist-info/licenses/LICENSE,sha256=X4PZDRQG4RmPhHU5c0G21Ki9LXWDCuLQ8W4mnED5RDU,1071
43
+ django_clerk_users-0.1.2.dist-info/RECORD,,