sanic-security 1.12.4__py3-none-any.whl → 1.12.5__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.
- sanic_security/authentication.py +16 -0
- sanic_security/exceptions.py +1 -1
- sanic_security/test/server.py +2 -8
- sanic_security/test/tests.py +1 -3
- {sanic_security-1.12.4.dist-info → sanic_security-1.12.5.dist-info}/METADATA +8 -12
- {sanic_security-1.12.4.dist-info → sanic_security-1.12.5.dist-info}/RECORD +9 -9
- {sanic_security-1.12.4.dist-info → sanic_security-1.12.5.dist-info}/LICENSE +0 -0
- {sanic_security-1.12.4.dist-info → sanic_security-1.12.5.dist-info}/WHEEL +0 -0
- {sanic_security-1.12.4.dist-info → sanic_security-1.12.5.dist-info}/top_level.txt +0 -0
sanic_security/authentication.py
CHANGED
@@ -249,6 +249,22 @@ def requires_authentication(arg=None):
|
|
249
249
|
return decorator(arg) if callable(arg) else decorator
|
250
250
|
|
251
251
|
|
252
|
+
def attach_refresh_encoder(app: Sanic):
|
253
|
+
"""
|
254
|
+
Automatically encodes the new/refreshed session returned during authentication when client's current session expires.
|
255
|
+
|
256
|
+
Args:
|
257
|
+
app: (Sanic): The main Sanic application instance.
|
258
|
+
"""
|
259
|
+
|
260
|
+
@app.on_response
|
261
|
+
async def refresh_encoder_middleware(request, response):
|
262
|
+
if hasattr(request.ctx, "authentication_session"):
|
263
|
+
authentication_session = request.ctx.authentication_session
|
264
|
+
if authentication_session.is_refresh:
|
265
|
+
authentication_session.encode(response)
|
266
|
+
|
267
|
+
|
252
268
|
def create_initial_admin_account(app: Sanic) -> None:
|
253
269
|
"""
|
254
270
|
Creates the initial admin account that can be logged into and has complete authoritative access.
|
sanic_security/exceptions.py
CHANGED
sanic_security/test/server.py
CHANGED
@@ -12,6 +12,7 @@ from sanic_security.authentication import (
|
|
12
12
|
logout,
|
13
13
|
create_initial_admin_account,
|
14
14
|
fulfill_second_factor,
|
15
|
+
attach_refresh_encoder,
|
15
16
|
)
|
16
17
|
from sanic_security.authorization import (
|
17
18
|
assign_role,
|
@@ -173,14 +174,6 @@ async def on_authenticate(request):
|
|
173
174
|
return response
|
174
175
|
|
175
176
|
|
176
|
-
@app.on_response
|
177
|
-
async def authentication_refresh_encoder(request, response):
|
178
|
-
if hasattr(request.ctx, "authentication_session"):
|
179
|
-
authentication_session = request.ctx.authentication_session
|
180
|
-
if authentication_session.is_refresh:
|
181
|
-
authentication_session.encode(response)
|
182
|
-
|
183
|
-
|
184
177
|
@app.post("api/test/auth/expire")
|
185
178
|
@requires_authentication
|
186
179
|
async def on_authentication_expire(request):
|
@@ -351,6 +344,7 @@ register_tortoise(
|
|
351
344
|
modules={"models": ["sanic_security.models"]},
|
352
345
|
generate_schemas=True,
|
353
346
|
)
|
347
|
+
attach_refresh_encoder(app)
|
354
348
|
create_initial_admin_account(app)
|
355
349
|
if __name__ == "__main__":
|
356
350
|
app.run(host="127.0.0.1", port=8000, workers=1, debug=True)
|
sanic_security/test/tests.py
CHANGED
@@ -576,6 +576,4 @@ class MiscTest(TestCase):
|
|
576
576
|
authenticate_response = self.client.post(
|
577
577
|
"http://127.0.0.1:8000/api/test/auth",
|
578
578
|
) # Since session refresh handling is complete, it will be returned as a regular session now.
|
579
|
-
assert
|
580
|
-
json.loads(authenticate_response.text)["data"]["refresh"] is False
|
581
|
-
), authenticate_response.text
|
579
|
+
assert authenticate_response.status_code == 200, authenticate_response.text
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: sanic-security
|
3
|
-
Version: 1.12.
|
3
|
+
Version: 1.12.5
|
4
4
|
Summary: An async security library for the Sanic framework.
|
5
5
|
Author-email: Aidan Stewart <na.stewart365@gmail.com>
|
6
6
|
Project-URL: Documentation, https://security.na-stewart.com/
|
@@ -248,7 +248,7 @@ async def on_login(request):
|
|
248
248
|
return response
|
249
249
|
```
|
250
250
|
|
251
|
-
If this isn't desired, you can pass an account and password attempt directly into the login instead.
|
251
|
+
If this isn't desired, you can pass an account and password attempt directly into the login method instead.
|
252
252
|
|
253
253
|
* Fulfill Second Factor
|
254
254
|
|
@@ -321,19 +321,15 @@ async def on_authenticate(request):
|
|
321
321
|
return response
|
322
322
|
```
|
323
323
|
|
324
|
-
*
|
324
|
+
* Refresh Encoder
|
325
325
|
|
326
|
-
|
327
|
-
|
328
|
-
Middleware is recommended to automatically encode the refreshed session.
|
326
|
+
A new/refreshed session is returned during authentication if the client's session expired during authentication and
|
327
|
+
requires encoding. Rather than doing so manually, it can be done automatically via middleware.
|
329
328
|
|
330
329
|
```python
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
authentication_session = request.ctx.authentication_session
|
335
|
-
if authentication_session.is_refresh:
|
336
|
-
authentication_session.encode(response)
|
330
|
+
attach_refresh_encoder(app)
|
331
|
+
if __name__ == "__main__":
|
332
|
+
app.run(host="127.0.0.1", port=8000)
|
337
333
|
```
|
338
334
|
|
339
335
|
## Captcha
|
@@ -1,16 +1,16 @@
|
|
1
1
|
sanic_security/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
sanic_security/authentication.py,sha256=
|
2
|
+
sanic_security/authentication.py,sha256=obMKNnJXleeBGXqmsm1y5jFNI-FrW9krdO5SD6yOstE,12598
|
3
3
|
sanic_security/authorization.py,sha256=aQztMiZG9LDctr_C6QEzO5qScwbxpiLk96XVxwdCChM,6921
|
4
4
|
sanic_security/configuration.py,sha256=p44nTSrBQQSJZYN6qJEod_Ettf90rRNlmPxmNzxqQ9A,5514
|
5
|
-
sanic_security/exceptions.py,sha256=
|
5
|
+
sanic_security/exceptions.py,sha256=MTPF4tm_68Nmf_z06RHH_6DTiC_CNiLER1jzEoW1dFk,5398
|
6
6
|
sanic_security/models.py,sha256=nj5iYHzPZzdLs5dc3j6kdeScSk1SASizfK58Sa5YN8E,22527
|
7
7
|
sanic_security/utils.py,sha256=Zgde7W69ixwv_H8eTs7indO5_U2Jvq62YUpG6ipN768,2629
|
8
8
|
sanic_security/verification.py,sha256=vrxYborEOBKEirOHczul9WYub5j6T2ldXE1gsoA8iyY,7503
|
9
9
|
sanic_security/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
-
sanic_security/test/server.py,sha256=
|
11
|
-
sanic_security/test/tests.py,sha256=
|
12
|
-
sanic_security-1.12.
|
13
|
-
sanic_security-1.12.
|
14
|
-
sanic_security-1.12.
|
15
|
-
sanic_security-1.12.
|
16
|
-
sanic_security-1.12.
|
10
|
+
sanic_security/test/server.py,sha256=pwqsDS81joMdxIynivaNPCCMamv9qzAjknfZ01ZxQHc,12380
|
11
|
+
sanic_security/test/tests.py,sha256=6TUp5GVYIR27qCzwIw2qt7DvW7ohxj-seYpnpeMbuno,22407
|
12
|
+
sanic_security-1.12.5.dist-info/LICENSE,sha256=sXlJs9_mG-dCkPfWsDnuzydJWagS82E2gYtkVH9enHA,1100
|
13
|
+
sanic_security-1.12.5.dist-info/METADATA,sha256=n8CLfkmnR8lcAn9ZO8tMQDC0H_TjWT1U0ITo3JCkWHs,23420
|
14
|
+
sanic_security-1.12.5.dist-info/WHEEL,sha256=cVxcB9AmuTcXqmwrtPhNK88dr7IR_b6qagTj0UvIEbY,91
|
15
|
+
sanic_security-1.12.5.dist-info/top_level.txt,sha256=ZybkhHXSjfzhmv8XeqLvnNmLmv21Z0oPX6Ep4DJN8b0,15
|
16
|
+
sanic_security-1.12.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|