pypomes-jwt 0.4.8__py3-none-any.whl → 0.5.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.

Potentially problematic release.


This version of pypomes-jwt might be problematic. Click here for more details.

pypomes_jwt/__init__.py CHANGED
@@ -5,8 +5,8 @@ from .jwt_pomes import (
5
5
  JWT_ENDPOINT_URL,
6
6
  JWT_ACCESS_MAX_AGE, JWT_REFRESH_MAX_AGE,
7
7
  JWT_HS_SECRET_KEY, JWT_RSA_PRIVATE_KEY, JWT_RSA_PUBLIC_KEY,
8
- jwt_get_token, jwt_get_token_data,
9
- jwt_get_claims, jwt_verify_request,
8
+ jwt_needed, jwt_verify_request,
9
+ jwt_get_claims, jwt_get_token, jwt_get_token_data,
10
10
  jwt_service, jwt_set_service_access, jwt_remove_service_access
11
11
  )
12
12
 
@@ -17,8 +17,8 @@ __all__ = [
17
17
  "JWT_ENDPOINT_URL",
18
18
  "JWT_ACCESS_MAX_AGE", "JWT_REFRESH_MAX_AGE",
19
19
  "JWT_HS_SECRET_KEY", "JWT_RSA_PRIVATE_KEY", "JWT_RSA_PUBLIC_KEY",
20
- "jwt_get_token", "jwt_get_token_data",
21
- "jwt_get_claims", "jwt_verify_request",
20
+ "jwt_needed", "jwt_verify_request",
21
+ "jwt_get_claims", "jwt_get_token", "jwt_get_token_data",
22
22
  "jwt_service", "jwt_set_service_access", "jwt_remove_service_access"
23
23
  ]
24
24
 
pypomes_jwt/jwt_pomes.py CHANGED
@@ -30,6 +30,23 @@ JWT_RSA_PUBLIC_KEY: Final[str] = __pub_key
30
30
  __jwt_data: JwtData = JwtData()
31
31
 
32
32
 
33
+ def jwt_needed(func: callable) -> callable:
34
+ """
35
+ Create a decorator to authenticate service endpoints with JWT tokens.
36
+
37
+ :param func: the function being decorated
38
+ """
39
+ # ruff: noqa: ANN003
40
+ def wrapper(*args, **kwargs) -> Response:
41
+ response: Response = jwt_verify_request(request=request) if JWT_ENDPOINT_URL else None
42
+ return response if response else func(*args, **kwargs)
43
+
44
+ # prevent a rogue error ("View function mapping is overwriting an existing endpoint function")
45
+ wrapper.__name__ = func.__name__
46
+
47
+ return wrapper
48
+
49
+
33
50
  def jwt_set_service_access(service_url: str,
34
51
  claims: dict[str, Any],
35
52
  algorithm: Literal["HS256", "HS512", "RSA256", "RSA512"] = JWT_DEFAULT_ALGORITHM,
@@ -206,14 +223,14 @@ def jwt_verify_request(request: Request,
206
223
  status=401)
207
224
  else:
208
225
  # no, report the error
209
- result = Response(response="Authorization failed, as no JWT token was provided",
226
+ result = Response(response="Authorization failed",
210
227
  status=401)
211
228
 
212
229
  return result
213
230
 
214
231
 
215
232
  # @flask_app.route(rule="/jwt-service",
216
- # methods=["GET", "POST"])
233
+ # methods=["POST"])
217
234
  def jwt_service(service_url: str = None) -> Response:
218
235
  """
219
236
  Entry point for obtaining JWT tokens.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: pypomes_jwt
3
- Version: 0.4.8
3
+ Version: 0.5.0
4
4
  Summary: A collection of Python pomes, penyeach (JWT module)
5
5
  Project-URL: Homepage, https://github.com/TheWiseCoder/PyPomes-JWT
6
6
  Project-URL: Bug Tracker, https://github.com/TheWiseCoder/PyPomes-JWT/issues
@@ -12,7 +12,7 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.10
13
13
  Requires-Dist: pip>=24.2
14
14
  Requires-Dist: pyjwt>=2.9.0
15
- Requires-Dist: pypomes-core>=1.5.2
16
- Requires-Dist: pypomes-crypto>=0.2.9
15
+ Requires-Dist: pypomes-core>=1.5.3
16
+ Requires-Dist: pypomes-crypto>=0.3.0
17
17
  Requires-Dist: setuptools>=75.1.0
18
18
  Requires-Dist: wheel>=0.44.0
@@ -0,0 +1,7 @@
1
+ pypomes_jwt/__init__.py,sha256=1IyBb94cZjkXMibHrH_vh043b06QFh5UQ6HTYSDau28,978
2
+ pypomes_jwt/jwt_data.py,sha256=g8wnWYI7bueCIuK67eW2Uy21ALYk5RbLigUHwljjzt4,17496
3
+ pypomes_jwt/jwt_pomes.py,sha256=IKfpvC3FO3ts-xfHQMxkPYQjeUjWrbVFOqXnNYJTKnM,11090
4
+ pypomes_jwt-0.5.0.dist-info/METADATA,sha256=0qWRdffYJRoy2Y69pgZGiB7BxJuIlcurNGvghFMGCxk,687
5
+ pypomes_jwt-0.5.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
6
+ pypomes_jwt-0.5.0.dist-info/licenses/LICENSE,sha256=NdakochSXm_H_-DSL_x2JlRCkYikj3snYYvTwgR5d_c,1086
7
+ pypomes_jwt-0.5.0.dist-info/RECORD,,
@@ -1,7 +0,0 @@
1
- pypomes_jwt/__init__.py,sha256=wIbTPmnxyGFuSdawdyglNn7GVKEvPZ_57MF9HBbWclc,952
2
- pypomes_jwt/jwt_data.py,sha256=g8wnWYI7bueCIuK67eW2Uy21ALYk5RbLigUHwljjzt4,17496
3
- pypomes_jwt/jwt_pomes.py,sha256=j-JvK-neQ4bCWcFVk6jfCRoGRQUjDixs6PVfdvnICS8,10541
4
- pypomes_jwt-0.4.8.dist-info/METADATA,sha256=xK6xa5JRtYwPuFGOBFSVcr96t0A03SkfZbJgIWwcpNk,687
5
- pypomes_jwt-0.4.8.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
6
- pypomes_jwt-0.4.8.dist-info/licenses/LICENSE,sha256=NdakochSXm_H_-DSL_x2JlRCkYikj3snYYvTwgR5d_c,1086
7
- pypomes_jwt-0.4.8.dist-info/RECORD,,