pypomes-jwt 0.8.5__py3-none-any.whl → 0.8.7__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.

@@ -49,7 +49,8 @@ JWT_REFRESH_MAX_AGE: Final[int] = env_get_int(key=f"{APP_PREFIX}_JWT_REFRESH_MAX
49
49
  JWT_ACCOUNT_LIMIT: Final[int] = env_get_int(key=f"{APP_PREFIX}_JWT_ACCOUNT_LIMIT")
50
50
 
51
51
  # recommended: allow the encode and decode keys to be generated anew when app starts
52
- __encoding_key: bytes = env_get_bytes(key=f"{APP_PREFIX}_JWT_ENCODE_KEY")
52
+ __encoding_key: bytes = env_get_bytes(key=f"{APP_PREFIX}_JWT_ENCODE_KEY",
53
+ style="base64")
53
54
  __decoding_key: bytes
54
55
  if JWT_DEFAULT_ALGORITHM in ["HS256", "HS512"]:
55
56
  if not __encoding_key:
pypomes_jwt/jwt_data.py CHANGED
@@ -35,8 +35,8 @@ class JwtData:
35
35
  "token-audience": <string> # the audience the token is intended for
36
36
  "token_nonce": <string> # value used to associate a client session with a token
37
37
  "claims": {
38
- "valid-from": <string> # token's start (<YYYY-MM-DD hh:mm:ss>)
39
- "valid-until": <string> # token's finish (<YYYY-MM-DD hh:mm:ss>)
38
+ "valid-from": <string> # token's start (<YYYY-MM-DDThh:mm:ss+00:00>)
39
+ "valid-until": <string> # token's finish (<YYYY-MM-DDThh:mm:ss+00:00>)
40
40
  "birthdate": <string>, # subject's birth date
41
41
  "email": <string>, # subject's email
42
42
  "gender": <string>, # subject's gender
@@ -68,8 +68,8 @@ class JwtData:
68
68
 
69
69
  Account-related claims are optional claims, and convey information about the registered account they belong to.
70
70
  Alhough they can be freely specified, these are some of the most commonly used claims:
71
- "valid-from": <string> # token's start (<YYYY-MM-DD hh:mm:ss>)
72
- "valid-until": <string> # token's finish (<YYYY-MM-DD hh:mm:ss>)
71
+ "valid-from": <string> # token's start (<YYYY-MM-DDThh:mm:ss+00:00>)
72
+ "valid-until": <string> # token's finish (<YYYY-MM-DDThh:mm:ss+00.00>)
73
73
  "birthdate": <string> # subject's birth date
74
74
  "email": <string> # subject's email
75
75
  "gender": <string> # subject's gender
@@ -151,10 +151,12 @@ class JwtData:
151
151
  :param logger: optional logger
152
152
  return: *True* if the access data was removed, *False* otherwise
153
153
  """
154
+ # remove from internal storage
154
155
  account_data: dict[str, Any] | None
155
156
  with self.access_lock:
156
157
  account_data = self.access_data.pop(account_id, None)
157
158
 
159
+ # remove from database
158
160
  db_delete(errors=None,
159
161
  delete_stmt=f"DELETE FROM {JWT_DB_TABLE}",
160
162
  where_data={JWT_DB_COL_ACCOUNT: account_id},
@@ -242,8 +244,10 @@ class JwtData:
242
244
 
243
245
  # issue a candidate refresh token first, and persist it
244
246
  current_claims["exp"] = just_now + account_data.get("refresh-max-age")
245
- current_claims["valid-from"] = datetime.fromtimestamp(timestamp=current_claims["iat"])
246
- current_claims["valid-until"] = datetime.fromtimestamp(timestamp=current_claims["exp"])
247
+ current_claims["valid-from"] = datetime.fromtimestamp(timestamp=current_claims["iat"],
248
+ tz=timezone.utc).isoformat()
249
+ current_claims["valid-until"] = datetime.fromtimestamp(timestamp=current_claims["exp"],
250
+ tz=timezone.utc).isoformat()
247
251
  # may raise an exception
248
252
  refresh_token: str = jwt.encode(payload=current_claims,
249
253
  key=JWT_ENCODING_KEY,
pypomes_jwt/jwt_pomes.py CHANGED
@@ -382,8 +382,8 @@ def jwt_get_claims(errors: list[str] | None,
382
382
  "kid": "1234"
383
383
  },
384
384
  "payload": {
385
- "valid-from": <YYYY-MM-DD hh:mm:ss>
386
- "valid-until": <YYYY-MM-DD hh:mm:ss>
385
+ "valid-from": <YYYY-MM-DDThh:mm:ss+00:00>
386
+ "valid-until": <YYYY-MM-DDThh:mm:ss+00:00>
387
387
  "birthdate": "1980-01-01",
388
388
  "email": "jdoe@mail.com",
389
389
  "exp": 1516640454,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pypomes_jwt
3
- Version: 0.8.5
3
+ Version: 0.8.7
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,5 +12,5 @@ Classifier: Programming Language :: Python :: 3
12
12
  Requires-Python: >=3.12
13
13
  Requires-Dist: cryptography>=44.0.2
14
14
  Requires-Dist: pyjwt>=2.10.1
15
- Requires-Dist: pypomes-core>=1.8.3
15
+ Requires-Dist: pypomes-core>=1.8.4
16
16
  Requires-Dist: pypomes-db>=1.9.6
@@ -0,0 +1,8 @@
1
+ pypomes_jwt/__init__.py,sha256=P7rT6ZVE2BzU3ntYOr83H5iOf5JcCmjDUYakNbrRAP0,1266
2
+ pypomes_jwt/jwt_constants.py,sha256=nDkOTJv1OqyQAsmyf6IVipg2MmynX2z-a75wFOJW4LQ,4035
3
+ pypomes_jwt/jwt_data.py,sha256=GTLB0KcfOQAUpYWIQzQgH8n6-jJUI3xWnqw5bUvX5d8,22485
4
+ pypomes_jwt/jwt_pomes.py,sha256=3YFWQpqpBHAKg8vS7RijtjgEJxTHsBkwXYu8VVnVHNU,17198
5
+ pypomes_jwt-0.8.7.dist-info/METADATA,sha256=xnAR6dfgxnv6bZ56wMdQ9z1yJQt9PcF6Wobu2PJJ3NM,632
6
+ pypomes_jwt-0.8.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
7
+ pypomes_jwt-0.8.7.dist-info/licenses/LICENSE,sha256=NdakochSXm_H_-DSL_x2JlRCkYikj3snYYvTwgR5d_c,1086
8
+ pypomes_jwt-0.8.7.dist-info/RECORD,,
@@ -1,8 +0,0 @@
1
- pypomes_jwt/__init__.py,sha256=P7rT6ZVE2BzU3ntYOr83H5iOf5JcCmjDUYakNbrRAP0,1266
2
- pypomes_jwt/jwt_constants.py,sha256=FA50jKQ3D09MxXkUpVkXW5IQqm_UX6qm3bU5gHvkU-4,3980
3
- pypomes_jwt/jwt_data.py,sha256=wRXLM8U5gb2JYDiv0G3R4n4npZyFJ_93tFI8A4BwROc,22180
4
- pypomes_jwt/jwt_pomes.py,sha256=BNL6r-IfnKKeBZFpTzFXQUnotFKgV6PeKHqar9Ys20I,17186
5
- pypomes_jwt-0.8.5.dist-info/METADATA,sha256=mMCgIa9kXt8WBVxxpI86ge27VYm2gg8rBAfzmnK6_Hc,632
6
- pypomes_jwt-0.8.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
7
- pypomes_jwt-0.8.5.dist-info/licenses/LICENSE,sha256=NdakochSXm_H_-DSL_x2JlRCkYikj3snYYvTwgR5d_c,1086
8
- pypomes_jwt-0.8.5.dist-info/RECORD,,