django-clerk-users 0.0.1__py3-none-any.whl → 0.1.0__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.
- django_clerk_users/__init__.py +78 -7
- django_clerk_users/apps.py +20 -0
- django_clerk_users/authentication/__init__.py +24 -0
- django_clerk_users/authentication/backends.py +89 -0
- django_clerk_users/authentication/drf.py +111 -0
- django_clerk_users/authentication/utils.py +171 -0
- django_clerk_users/caching.py +161 -0
- django_clerk_users/checks.py +127 -0
- django_clerk_users/client.py +32 -0
- django_clerk_users/decorators.py +181 -0
- django_clerk_users/exceptions.py +51 -0
- django_clerk_users/management/__init__.py +0 -0
- django_clerk_users/management/commands/__init__.py +0 -0
- django_clerk_users/management/commands/migrate_users_to_clerk.py +223 -0
- django_clerk_users/management/commands/sync_clerk_organizations.py +191 -0
- django_clerk_users/management/commands/sync_clerk_users.py +114 -0
- django_clerk_users/managers.py +120 -0
- django_clerk_users/middleware/__init__.py +9 -0
- django_clerk_users/middleware/auth.py +230 -0
- django_clerk_users/migrations/0001_initial.py +174 -0
- django_clerk_users/migrations/0002_make_clerk_id_nullable.py +24 -0
- django_clerk_users/migrations/__init__.py +0 -0
- django_clerk_users/models.py +180 -0
- django_clerk_users/organizations/__init__.py +8 -0
- django_clerk_users/organizations/admin.py +81 -0
- django_clerk_users/organizations/apps.py +8 -0
- django_clerk_users/organizations/middleware.py +130 -0
- django_clerk_users/organizations/migrations/0001_initial.py +349 -0
- django_clerk_users/organizations/migrations/__init__.py +0 -0
- django_clerk_users/organizations/models.py +314 -0
- django_clerk_users/organizations/webhooks.py +417 -0
- django_clerk_users/settings.py +37 -0
- django_clerk_users/testing.py +381 -0
- django_clerk_users/utils.py +210 -0
- django_clerk_users/webhooks/__init__.py +26 -0
- django_clerk_users/webhooks/handlers.py +346 -0
- django_clerk_users/webhooks/security.py +108 -0
- django_clerk_users/webhooks/signals.py +42 -0
- django_clerk_users/webhooks/views.py +76 -0
- django_clerk_users-0.1.0.dist-info/METADATA +311 -0
- django_clerk_users-0.1.0.dist-info/RECORD +43 -0
- {django_clerk_users-0.0.1.dist-info → django_clerk_users-0.1.0.dist-info}/WHEEL +1 -2
- django_clerk_users/main.py +0 -2
- django_clerk_users-0.0.1.dist-info/METADATA +0 -24
- django_clerk_users-0.0.1.dist-info/RECORD +0 -7
- django_clerk_users-0.0.1.dist-info/top_level.txt +0 -1
- {django_clerk_users-0.0.1.dist-info → django_clerk_users-0.1.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: django-clerk-users
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Integrate Clerk with Django
|
|
5
|
+
Project-URL: Changelog, https://github.com/jmitchel3/django-clerk-users
|
|
6
|
+
Project-URL: Documentation, https://github.com/jmitchel3/django-clerk-users
|
|
7
|
+
Project-URL: Funding, https://github.com/jmitchel3/django-clerk-users
|
|
8
|
+
Project-URL: Repository, https://github.com/jmitchel3/django-clerk-users
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Framework :: Django
|
|
12
|
+
Classifier: Framework :: Django :: 4.2
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Requires-Python: >=3.12
|
|
18
|
+
Requires-Dist: clerk-backend-api>=1.0.0
|
|
19
|
+
Requires-Dist: django>=4.2
|
|
20
|
+
Requires-Dist: svix>=1.0.0
|
|
21
|
+
Provides-Extra: drf
|
|
22
|
+
Requires-Dist: djangorestframework>=3.14; extra == 'drf'
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
# Django Clerk Users
|
|
26
|
+
|
|
27
|
+
Integrate [Clerk](https://clerk.com) authentication with Django.
|
|
28
|
+
|
|
29
|
+
> **Note:** This package is in early development (v0.0.2). APIs may change.
|
|
30
|
+
|
|
31
|
+
## Features
|
|
32
|
+
|
|
33
|
+
- Custom user model (`ClerkUser`) with Clerk integration
|
|
34
|
+
- JWT token validation via Clerk SDK
|
|
35
|
+
- Session-based authentication middleware (validates once, caches in session)
|
|
36
|
+
- Webhook handling with Svix signature verification
|
|
37
|
+
- Optional organizations support (separate sub-app)
|
|
38
|
+
- Django REST Framework authentication (optional)
|
|
39
|
+
|
|
40
|
+
## Installation
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install django-clerk-users
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
For Django REST Framework support:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install django-clerk-users[drf]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Quick Start
|
|
53
|
+
|
|
54
|
+
### 1. Add to installed apps
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
INSTALLED_APPS = [
|
|
58
|
+
# ...
|
|
59
|
+
"django_clerk_users",
|
|
60
|
+
# Optional: for organization support
|
|
61
|
+
# "django_clerk_users.organizations",
|
|
62
|
+
]
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 2. Configure settings
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
# Required
|
|
69
|
+
CLERK_SECRET_KEY = "sk_live_..." # From Clerk Dashboard
|
|
70
|
+
CLERK_WEBHOOK_SIGNING_KEY = "whsec_..." # From Clerk Webhooks
|
|
71
|
+
CLERK_FRONTEND_HOSTS = ["https://your-app.com"] # Your frontend URLs
|
|
72
|
+
|
|
73
|
+
# Optional
|
|
74
|
+
CLERK_SESSION_REVALIDATION_SECONDS = 300 # Re-validate JWT every 5 minutes
|
|
75
|
+
CLERK_CACHE_TIMEOUT = 300 # Cache timeout for user lookups
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 3. Set the user model
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
AUTH_USER_MODEL = "django_clerk_users.ClerkUser"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Or extend the abstract model for custom fields:
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
# myapp/models.py
|
|
88
|
+
from django_clerk_users.models import AbstractClerkUser
|
|
89
|
+
|
|
90
|
+
class CustomUser(AbstractClerkUser):
|
|
91
|
+
company = models.CharField(max_length=255, blank=True)
|
|
92
|
+
|
|
93
|
+
class Meta(AbstractClerkUser.Meta):
|
|
94
|
+
swappable = "AUTH_USER_MODEL"
|
|
95
|
+
|
|
96
|
+
# settings.py
|
|
97
|
+
AUTH_USER_MODEL = "myapp.CustomUser"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 4. Add middleware
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
MIDDLEWARE = [
|
|
104
|
+
"django.middleware.security.SecurityMiddleware",
|
|
105
|
+
"django.contrib.sessions.middleware.SessionMiddleware",
|
|
106
|
+
"django.middleware.common.CommonMiddleware",
|
|
107
|
+
"django.middleware.csrf.CsrfViewMiddleware",
|
|
108
|
+
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
|
109
|
+
"django_clerk_users.middleware.ClerkAuthMiddleware", # Add after AuthenticationMiddleware
|
|
110
|
+
# ...
|
|
111
|
+
]
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 5. Add authentication backend
|
|
115
|
+
|
|
116
|
+
**For Clerk-only authentication:**
|
|
117
|
+
|
|
118
|
+
```python
|
|
119
|
+
AUTHENTICATION_BACKENDS = [
|
|
120
|
+
"django_clerk_users.authentication.ClerkBackend",
|
|
121
|
+
]
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**For hybrid authentication (Clerk + Django admin):**
|
|
125
|
+
|
|
126
|
+
If you want to support both Clerk authentication (JWT) and traditional Django admin login (username/password), use both backends:
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
AUTHENTICATION_BACKENDS = [
|
|
130
|
+
"django.contrib.auth.backends.ModelBackend", # For Django admin
|
|
131
|
+
"django_clerk_users.authentication.ClerkBackend", # For Clerk JWT
|
|
132
|
+
]
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
This allows:
|
|
136
|
+
- Admin users to log in via Django admin with username/password
|
|
137
|
+
- Frontend users to authenticate via Clerk JWT tokens
|
|
138
|
+
- The middleware automatically detects which authentication method was used
|
|
139
|
+
|
|
140
|
+
### 6. Run migrations
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
python manage.py migrate
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 7. Configure webhooks
|
|
147
|
+
|
|
148
|
+
Add the webhook URL to your `urls.py`:
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
from django_clerk_users.webhooks import clerk_webhook_view
|
|
152
|
+
|
|
153
|
+
urlpatterns = [
|
|
154
|
+
# ...
|
|
155
|
+
path("webhooks/clerk/", clerk_webhook_view, name="clerk_webhook"),
|
|
156
|
+
]
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Then configure your Clerk Dashboard to send webhooks to `https://your-app.com/webhooks/clerk/`.
|
|
160
|
+
|
|
161
|
+
### 8. Create admin users (for hybrid authentication)
|
|
162
|
+
|
|
163
|
+
If you're using hybrid authentication, create an admin user for Django admin access:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
python manage.py createsuperuser
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
This creates a user with:
|
|
170
|
+
- Username/password authentication (for Django admin)
|
|
171
|
+
- No `clerk_id` (since they're not Clerk users)
|
|
172
|
+
- Access to Django admin panel
|
|
173
|
+
|
|
174
|
+
Note: Regular Clerk users are created automatically via webhooks when they sign up through your frontend.
|
|
175
|
+
|
|
176
|
+
## Usage
|
|
177
|
+
|
|
178
|
+
### Accessing the user in views
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
def my_view(request):
|
|
182
|
+
if request.user.is_authenticated:
|
|
183
|
+
# Access Clerk user attributes
|
|
184
|
+
print(request.user.clerk_id)
|
|
185
|
+
print(request.user.email)
|
|
186
|
+
print(request.user.full_name)
|
|
187
|
+
|
|
188
|
+
# Access organization (if using organizations)
|
|
189
|
+
print(request.org) # Organization ID from JWT
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Decorators
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
from django_clerk_users.decorators import clerk_user_required
|
|
196
|
+
|
|
197
|
+
@clerk_user_required
|
|
198
|
+
def protected_view(request):
|
|
199
|
+
# Only authenticated Clerk users can access
|
|
200
|
+
return HttpResponse(f"Hello, {request.user.email}")
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Django REST Framework
|
|
204
|
+
|
|
205
|
+
```python
|
|
206
|
+
# settings.py
|
|
207
|
+
REST_FRAMEWORK = {
|
|
208
|
+
"DEFAULT_AUTHENTICATION_CLASSES": [
|
|
209
|
+
"django_clerk_users.authentication.ClerkAuthentication",
|
|
210
|
+
],
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
## Hybrid Authentication (Clerk + Django Admin)
|
|
215
|
+
|
|
216
|
+
The package supports hybrid authentication, allowing you to use both Clerk (JWT-based) authentication for your frontend users and traditional Django admin authentication for internal staff.
|
|
217
|
+
|
|
218
|
+
### How it works
|
|
219
|
+
|
|
220
|
+
1. **Frontend users**: Authenticate via Clerk JWT tokens (handled by `ClerkAuthMiddleware`)
|
|
221
|
+
2. **Admin users**: Authenticate via username/password (handled by Django's `ModelBackend`)
|
|
222
|
+
3. The middleware automatically detects which authentication method was used and respects existing sessions
|
|
223
|
+
|
|
224
|
+
### Configuration
|
|
225
|
+
|
|
226
|
+
```python
|
|
227
|
+
# settings.py
|
|
228
|
+
AUTHENTICATION_BACKENDS = [
|
|
229
|
+
"django.contrib.auth.backends.ModelBackend", # For Django admin
|
|
230
|
+
"django_clerk_users.authentication.ClerkBackend", # For Clerk JWT
|
|
231
|
+
]
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Creating admin users
|
|
235
|
+
|
|
236
|
+
Admin users don't need a `clerk_id` (it's optional in hybrid mode):
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
python manage.py createsuperuser
|
|
240
|
+
# Email: admin@example.com
|
|
241
|
+
# Password: ********
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
This creates a user with:
|
|
245
|
+
- Username/password authentication (no Clerk integration)
|
|
246
|
+
- Access to Django admin panel at `/admin/`
|
|
247
|
+
- Standard Django permissions (is_staff, is_superuser)
|
|
248
|
+
|
|
249
|
+
### Session handling
|
|
250
|
+
|
|
251
|
+
- **Django admin sessions**: Traditional session cookies (set by Django's auth system)
|
|
252
|
+
- **Clerk sessions**: JWT validated once, then cached in session with `last_clerk_check` marker
|
|
253
|
+
- The middleware checks for `last_clerk_check` to distinguish between the two types
|
|
254
|
+
|
|
255
|
+
### Use cases
|
|
256
|
+
|
|
257
|
+
This is particularly useful when:
|
|
258
|
+
- Your admin panel is on a different domain than your frontend
|
|
259
|
+
- You want internal staff to access Django admin without Clerk accounts
|
|
260
|
+
- You need traditional Django auth features (permissions, groups, etc.)
|
|
261
|
+
- You're migrating from Django auth to Clerk gradually
|
|
262
|
+
|
|
263
|
+
## Organizations (Optional)
|
|
264
|
+
|
|
265
|
+
For Clerk organization support:
|
|
266
|
+
|
|
267
|
+
```python
|
|
268
|
+
# settings.py
|
|
269
|
+
INSTALLED_APPS = [
|
|
270
|
+
# ...
|
|
271
|
+
"django_clerk_users",
|
|
272
|
+
"django_clerk_users.organizations",
|
|
273
|
+
]
|
|
274
|
+
|
|
275
|
+
MIDDLEWARE = [
|
|
276
|
+
# ...
|
|
277
|
+
"django_clerk_users.middleware.ClerkAuthMiddleware",
|
|
278
|
+
"django_clerk_users.organizations.middleware.ClerkOrganizationMiddleware",
|
|
279
|
+
]
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
## Management Commands
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
# Sync users from Clerk
|
|
286
|
+
python manage.py sync_clerk_users
|
|
287
|
+
|
|
288
|
+
# Sync organizations from Clerk
|
|
289
|
+
python manage.py sync_clerk_organizations
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Configuration Reference
|
|
293
|
+
|
|
294
|
+
| Setting | Required | Default | Description |
|
|
295
|
+
|---------|----------|---------|-------------|
|
|
296
|
+
| `CLERK_SECRET_KEY` | Yes | - | Your Clerk secret key |
|
|
297
|
+
| `CLERK_WEBHOOK_SIGNING_KEY` | Yes* | - | Webhook signing secret (*required for webhooks) |
|
|
298
|
+
| `CLERK_FRONTEND_HOSTS` | Yes | `[]` | Authorized frontend URLs |
|
|
299
|
+
| `CLERK_AUTH_PARTIES` | No | `[]` | Alias for `CLERK_FRONTEND_HOSTS` |
|
|
300
|
+
| `CLERK_SESSION_REVALIDATION_SECONDS` | No | `300` | JWT revalidation interval (seconds) |
|
|
301
|
+
| `CLERK_CACHE_TIMEOUT` | No | `300` | User cache timeout (seconds) |
|
|
302
|
+
| `CLERK_ORG_CACHE_TIMEOUT` | No | `900` | Organization cache timeout (seconds) |
|
|
303
|
+
| `CLERK_WEBHOOK_DEDUP_TIMEOUT` | No | `45` | Webhook deduplication cache timeout (seconds) |
|
|
304
|
+
|
|
305
|
+
## License
|
|
306
|
+
|
|
307
|
+
MIT
|
|
308
|
+
|
|
309
|
+
## Contributing
|
|
310
|
+
|
|
311
|
+
Contributions are welcome! Please open an issue or PR on [GitHub](https://github.com/jmitchel3/django-clerk-users).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
django_clerk_users/__init__.py,sha256=Ph93iT6_RNdZej3GM6cez-cJjiXw6w1V-u4GCnGP8TY,2287
|
|
2
|
+
django_clerk_users/apps.py,sha256=upj0qWYVg4P2D6_Vt8QZWTfBpAdIP7EAQjVjEnfHLRA,729
|
|
3
|
+
django_clerk_users/caching.py,sha256=QXRd9cFvvUucrnLBd7_PId3xDodqcessDMybkHyskkU,4651
|
|
4
|
+
django_clerk_users/checks.py,sha256=gnHccAyXixtGToGhgWl4gfCY-qPB5ckimpDVadOP3E4,4191
|
|
5
|
+
django_clerk_users/client.py,sha256=-nBXsPOibVwD7zXQ-Z-qTBb7NyPuUZpvlDcAlDVFUBA,815
|
|
6
|
+
django_clerk_users/decorators.py,sha256=Hm86XIxNdSiuDmqT8tFRrz6sQR9IOxB7zfxfO8MeJLg,5011
|
|
7
|
+
django_clerk_users/exceptions.py,sha256=nVTJR1d5PxuMqC8js1Sj-MRHJHkI4KUwphjuCEN4fiM,890
|
|
8
|
+
django_clerk_users/managers.py,sha256=HvSkGeiQhjA6EFXrW4GTlxXtlRDtlT54BbwbvnNuOWg,3610
|
|
9
|
+
django_clerk_users/models.py,sha256=DMcEnGNioGX5xsP4U47ich1L_UoZNAFEDb-vZVVV8Tk,5210
|
|
10
|
+
django_clerk_users/settings.py,sha256=pRyt_kSPWOT8CkTvyce3sf0RxfIoG5DEwnGUT8bIDi8,1305
|
|
11
|
+
django_clerk_users/testing.py,sha256=ZoYi7dG_HjSp19_c1AvILOoCfHlofs7LN-5ALS_UhDw,12160
|
|
12
|
+
django_clerk_users/utils.py,sha256=bQWfPUKfVvXi69Ctny1T1Kxzk-qMDpXQBRVa6URH53I,5886
|
|
13
|
+
django_clerk_users/authentication/__init__.py,sha256=PStQVzC-CA2Guyo4ksrxP58o93mfygW4qcJXWEjs6ak,614
|
|
14
|
+
django_clerk_users/authentication/backends.py,sha256=We0P2AhMv_DB_ZwtFGmmjWKvT5Cewy441Iua2lAZZCg,2400
|
|
15
|
+
django_clerk_users/authentication/drf.py,sha256=AqHvZTe9RnxN7FVzlSUXR72QBj2imGglkx9rpOrRDIk,3215
|
|
16
|
+
django_clerk_users/authentication/utils.py,sha256=tpnRXQLbQPkosKV8OhxtXpapuema4c08g58YYmMl3js,5326
|
|
17
|
+
django_clerk_users/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
django_clerk_users/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
django_clerk_users/management/commands/migrate_users_to_clerk.py,sha256=qjw4Q6pU7-4Tt7XourTzCw7IBm5kkOau4mPkW2Vz13E,8047
|
|
20
|
+
django_clerk_users/management/commands/sync_clerk_organizations.py,sha256=G1kasAPvvwM-PPb5xXxKNlex_-gWyKDP2HLS5g8hVkk,6656
|
|
21
|
+
django_clerk_users/management/commands/sync_clerk_users.py,sha256=hvWrvcqAkZHvjqQAOj3-e6pKx5TKtArmlsHDUottRMM,3755
|
|
22
|
+
django_clerk_users/middleware/__init__.py,sha256=tnr4eBer0KGVBAZBgBQZVpcL7jf8t2_CBLsMnau5JW4,153
|
|
23
|
+
django_clerk_users/middleware/auth.py,sha256=FLo4DHkiL3QnEPZsvJDGFIahfH1HUcqkBEzYXEx0fN0,8889
|
|
24
|
+
django_clerk_users/migrations/0001_initial.py,sha256=tnPvGlLnWrItuhYS0s5mr3TJ8__2e_yNKJS4nsFuWhk,6246
|
|
25
|
+
django_clerk_users/migrations/0002_make_clerk_id_nullable.py,sha256=OXad63KPFTMLn2lkwkuNkr8ZbM6BiNlsw6z72fhY-eU,640
|
|
26
|
+
django_clerk_users/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
+
django_clerk_users/organizations/__init__.py,sha256=NZU2C8F4Trm63_qaUf78jROKz6XFnu36uREkw7g_yho,270
|
|
28
|
+
django_clerk_users/organizations/admin.py,sha256=u7qHMgb11akHiJ2FCzqbSLQ3_TsTiejf0wH10f5_PPQ,1838
|
|
29
|
+
django_clerk_users/organizations/apps.py,sha256=IgKNl5REkAgLDHC06GFI-a3x3Mi2HWN4L-El0Ef6CE8,252
|
|
30
|
+
django_clerk_users/organizations/middleware.py,sha256=5Gvu28SCEqpuIjr2Fah5O85m0wnjMiDp4vxdvVzJh68,4129
|
|
31
|
+
django_clerk_users/organizations/models.py,sha256=rGy3udfo2xO6XBMPHS7eTTk9meyxx_3GI9zL9lH-ScY,8602
|
|
32
|
+
django_clerk_users/organizations/webhooks.py,sha256=zp16_vL5j7DEaVC5ZxgYwrE8zPpUsRIq8TGBd8SYhoo,14321
|
|
33
|
+
django_clerk_users/organizations/migrations/0001_initial.py,sha256=NXZ63PLqkX0ebavvLk6aHOffiFDq0pZamEelb6PG4Yg,12625
|
|
34
|
+
django_clerk_users/organizations/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
django_clerk_users/webhooks/__init__.py,sha256=XlpsPmc_lHQkZVMeuXce_2hsq7WZzXOXNy36kiQA5Lk,558
|
|
36
|
+
django_clerk_users/webhooks/handlers.py,sha256=GnotJNhN809DsrbfZjtJD0KurThKyAXZS982a41ljwg,9457
|
|
37
|
+
django_clerk_users/webhooks/security.py,sha256=Ig2ZxF8SxX5o-4bNRehFhip4hVvcQxoGsTj3sTY3WSU,3461
|
|
38
|
+
django_clerk_users/webhooks/signals.py,sha256=bytshg7IMDnlvnCZ0_TGjUXZZLRNxtn2RSx97qacZ-w,1668
|
|
39
|
+
django_clerk_users/webhooks/views.py,sha256=0-ilzzO7tBfc-pENMy0ZSSkQ4uPqH2QAt249EK2wQKA,2287
|
|
40
|
+
django_clerk_users-0.1.0.dist-info/METADATA,sha256=JSE1da_-Xl_lXQimkztPbpz1bY4MF45wkQY2K49U75E,8687
|
|
41
|
+
django_clerk_users-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
42
|
+
django_clerk_users-0.1.0.dist-info/licenses/LICENSE,sha256=X4PZDRQG4RmPhHU5c0G21Ki9LXWDCuLQ8W4mnED5RDU,1071
|
|
43
|
+
django_clerk_users-0.1.0.dist-info/RECORD,,
|
django_clerk_users/main.py
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: django-clerk-users
|
|
3
|
-
Version: 0.0.1
|
|
4
|
-
Summary: Integrate Clerk with Django
|
|
5
|
-
Project-URL: Changelog, https://github.com/jmitchel3/django-clerk-users
|
|
6
|
-
Project-URL: Documentation, https://github.com/jmitchel3/django-clerk-users
|
|
7
|
-
Project-URL: Funding, https://github.com/jmitchel3/django-clerk-users
|
|
8
|
-
Project-URL: Repository, https://github.com/jmitchel3/django-clerk-users
|
|
9
|
-
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Framework :: Django
|
|
11
|
-
Classifier: Framework :: Django :: 4.2
|
|
12
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
16
|
-
Requires-Python: >=3.12
|
|
17
|
-
Description-Content-Type: text/markdown
|
|
18
|
-
License-File: LICENSE
|
|
19
|
-
Requires-Dist: django>=4.2
|
|
20
|
-
Dynamic: license-file
|
|
21
|
-
|
|
22
|
-
# Django Clerk Users
|
|
23
|
-
|
|
24
|
-
Integrate Clerk with Django, coming soon.
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
django_clerk_users/__init__.py,sha256=L_pMt2_tM2dlDpsSo12M-kG_qW6TlMCr-sk0KMfKAxE,549
|
|
2
|
-
django_clerk_users/main.py,sha256=RfM09MvG3C2hmAH5l0RM-lbYatU_58RmkEpjrHtE2BM,63
|
|
3
|
-
django_clerk_users-0.0.1.dist-info/licenses/LICENSE,sha256=X4PZDRQG4RmPhHU5c0G21Ki9LXWDCuLQ8W4mnED5RDU,1071
|
|
4
|
-
django_clerk_users-0.0.1.dist-info/METADATA,sha256=S8sFVa0UAXvgXnLdmBLrD7QXzR7Tubn76v7cnqyrn3c,913
|
|
5
|
-
django_clerk_users-0.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
6
|
-
django_clerk_users-0.0.1.dist-info/top_level.txt,sha256=m2CUZNVRrrVHorKdGlRLuGJbc0NFgx1f2GGjpTLuGXY,19
|
|
7
|
-
django_clerk_users-0.0.1.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
django_clerk_users
|
|
File without changes
|