jamlib 3.2.0b1__tar.gz → 3.2.0b2__tar.gz

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.
Files changed (122) hide show
  1. {jamlib-3.2.0b1/src/jamlib.egg-info → jamlib-3.2.0b2}/PKG-INFO +1 -1
  2. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/pyproject.toml +1 -1
  3. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__init__.py +1 -1
  4. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/flask/extensions.py +3 -2
  5. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/middleware.py +4 -3
  6. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/plugins.py +1 -1
  7. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/starlette/backends.py +3 -2
  8. jamlib-3.2.0b2/src/jam/jose/__init__.py +55 -0
  9. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__init__.py +1 -1
  10. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/tests/clients.py +1 -1
  11. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/tests/fakers.py +1 -1
  12. {jamlib-3.2.0b1 → jamlib-3.2.0b2/src/jamlib.egg-info}/PKG-INFO +1 -1
  13. jamlib-3.2.0b1/src/jam/jose/__init__.py +0 -19
  14. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/LICENSE.md +0 -0
  15. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/README.md +0 -0
  16. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/setup.cfg +0 -0
  17. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__base__.py +0 -0
  18. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__base_encoder__.py +0 -0
  19. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/__deprecated__.py +0 -0
  20. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/__base__.py +0 -0
  21. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/__init__.py +0 -0
  22. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/instance.py +0 -0
  23. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/jwt/__init__.py +0 -0
  24. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/__base__.py +0 -0
  25. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/__init__.py +0 -0
  26. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/__init__.py +0 -0
  27. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/github.py +0 -0
  28. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/gitlab.py +0 -0
  29. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/google.py +0 -0
  30. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/builtin/yandex.py +0 -0
  31. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/oauth2/client.py +0 -0
  32. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/__base__.py +0 -0
  33. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/__init__.py +0 -0
  34. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/json.py +0 -0
  35. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/aio/sessions/redis.py +0 -0
  36. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/__init__.py +0 -0
  37. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/cli.py +0 -0
  38. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/commands/__init__.py +0 -0
  39. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/commands/keys.py +0 -0
  40. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/cli/commands/password.py +0 -0
  41. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/encoders.py +0 -0
  42. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/__init__.py +0 -0
  43. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/base.py +0 -0
  44. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/jose.py +0 -0
  45. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/jwt.py +0 -0
  46. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/oauth2.py +0 -0
  47. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/paseto.py +0 -0
  48. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/plugins.py +0 -0
  49. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/exceptions/sessions.py +0 -0
  50. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/__init__.py +0 -0
  51. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/fastapi/__init__.py +0 -0
  52. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/flask/__init__.py +0 -0
  53. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/flask/objects.py +0 -0
  54. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/__init__.py +0 -0
  55. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/litestar/objects.py +0 -0
  56. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/starlette/__init__.py +0 -0
  57. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/ext/starlette/objects.py +0 -0
  58. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/instance.py +0 -0
  59. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/__algorithms__.py +0 -0
  60. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/__base__.py +0 -0
  61. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jwe.py +0 -0
  62. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jwk.py +0 -0
  63. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jws.py +0 -0
  64. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/jwt.py +0 -0
  65. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/__base__.py +0 -0
  66. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/__init__.py +0 -0
  67. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/json.py +0 -0
  68. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/memory.py +0 -0
  69. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/lists/redis.py +0 -0
  70. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jose/utils.py +0 -0
  71. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__algorithms__.py +0 -0
  72. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__base__.py +0 -0
  73. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/__types__.py +0 -0
  74. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/__base__.py +0 -0
  75. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/__init__.py +0 -0
  76. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/json.py +0 -0
  77. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/lists/redis.py +0 -0
  78. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/module.py +0 -0
  79. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/jwt/utils.py +0 -0
  80. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/logger.py +0 -0
  81. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/__base__.py +0 -0
  82. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/__init__.py +0 -0
  83. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/__init__.py +0 -0
  84. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/github.py +0 -0
  85. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/gitlab.py +0 -0
  86. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/google.py +0 -0
  87. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/builtin/yandex.py +0 -0
  88. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/oauth2/client.py +0 -0
  89. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/__base__.py +0 -0
  90. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/__init__.py +0 -0
  91. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/hotp.py +0 -0
  92. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/otp/totp.py +0 -0
  93. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/__base__.py +0 -0
  94. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/__init__.py +0 -0
  95. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/utils.py +0 -0
  96. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v1.py +0 -0
  97. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v2.py +0 -0
  98. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v3.py +0 -0
  99. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/paseto/v4.py +0 -0
  100. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/py.typed +0 -0
  101. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/__base__.py +0 -0
  102. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/__init__.py +0 -0
  103. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/json.py +0 -0
  104. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/sessions/redis.py +0 -0
  105. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/tests/__init__.py +0 -0
  106. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/__init__.py +0 -0
  107. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/aes.py +0 -0
  108. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/await_maybe.py +0 -0
  109. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/basic_auth.py +0 -0
  110. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/config_maker.py +0 -0
  111. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/ed.py +0 -0
  112. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/otp_keys.py +0 -0
  113. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/rsa.py +0 -0
  114. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/salt_hash.py +0 -0
  115. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/symmetric.py +0 -0
  116. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/xchacha20poly1305.py +0 -0
  117. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jam/utils/xor.py +0 -0
  118. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/SOURCES.txt +0 -0
  119. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/dependency_links.txt +0 -0
  120. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/entry_points.txt +0 -0
  121. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/requires.txt +0 -0
  122. {jamlib-3.2.0b1 → jamlib-3.2.0b2}/src/jamlib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jamlib
3
- Version: 3.2.0b1
3
+ Version: 3.2.0b2
4
4
  Summary: Simple and universal library for authorization.
5
5
  Author-email: Makridenko Adrian <adrianmakridenko@duck.com>, Ksenia Travnikova <kseniatravnikova@duck.com>
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "jamlib"
3
- version = "3.2.0b1"
3
+ version = "3.2.0b2"
4
4
  description = "Simple and universal library for authorization."
5
5
  authors = [
6
6
  {name = "Makridenko Adrian",email = "adrianmakridenko@duck.com"},
@@ -12,5 +12,5 @@ from jam.encoders import JsonEncoder
12
12
  from jam.instance import Jam
13
13
 
14
14
 
15
- __version__ = "3.2.0b1"
15
+ __version__ = "3.2.0b2"
16
16
  __all__ = ["Jam", "JsonEncoder", "BaseJam", "BaseEncoder"]
@@ -5,7 +5,7 @@ from typing import Any
5
5
  import flask
6
6
 
7
7
  from jam.exceptions import JamFlaskPluginConfigError
8
- from jam.jwt import create_instance as create_jwt
8
+ from jam.jose import create_instance as create_jwt
9
9
  from jam.oauth2 import create_instance as create_oauth2
10
10
  from jam.paseto import create_instance as create_paseto
11
11
  from jam.sessions import create_instance as create_session
@@ -170,7 +170,8 @@ class JWTExtension(BaseAuthExtension):
170
170
  if not token:
171
171
  return None
172
172
  try:
173
- payload = self._auth.decode(token)
173
+ result = self._auth.decode(token)
174
+ payload = result.get("payload", result)
174
175
  flask.g.payload = payload
175
176
  return payload
176
177
  except Exception:
@@ -11,7 +11,7 @@ from litestar.middleware import (
11
11
  from jam.aio.sessions.__base__ import BaseAsyncSessionModule
12
12
  from jam.exceptions import JamLitestarPluginConfigError, JamLitestarPluginError
13
13
  from jam.ext.litestar.objects import BaseUser, Token
14
- from jam.jwt import JWT
14
+ from jam.jose.__base__ import BaseJWT as JWTClass
15
15
  from jam.paseto import BasePASETO
16
16
 
17
17
 
@@ -46,7 +46,7 @@ class BaseMiddleware(AbstractAuthenticationMiddleware):
46
46
  class JWTMiddleware(BaseMiddleware):
47
47
  """JWT Middleware for litestar."""
48
48
 
49
- AUTH_MODULE: JWT
49
+ AUTH_MODULE: JWTClass
50
50
  LIST: bool = False
51
51
 
52
52
  async def authenticate_request( # noqa
@@ -57,7 +57,8 @@ class JWTMiddleware(BaseMiddleware):
57
57
  if not token:
58
58
  return AuthenticationResult(user=None, auth=token_model)
59
59
  try:
60
- data = self.AUTH_MODULE.decode(token)
60
+ result = self.AUTH_MODULE.decode(token)
61
+ data = result.get("payload", result)
61
62
  if self.AUTH_MODULE.list and self.LIST:
62
63
  match self.AUTH_MODULE.list.__list_type__:
63
64
  case "white":
@@ -16,7 +16,7 @@ from jam.ext.litestar.middleware import (
16
16
  SessionMiddleware,
17
17
  )
18
18
  from jam.ext.litestar.objects import BaseUser
19
- from jam.jwt import create_instance as create_jwt
19
+ from jam.jose import create_instance as create_jwt
20
20
  from jam.oauth2 import create_instance as create_oauth2
21
21
  from jam.paseto import create_instance as create_paseto
22
22
  from jam.utils.config_maker import GENERIC_POINTER, __config_maker__
@@ -14,7 +14,7 @@ from starlette.requests import HTTPConnection
14
14
  from jam.aio.sessions import create_instance as create_session
15
15
  from jam.exceptions import JamStarlettePluginConfigError
16
16
  from jam.ext.starlette.objects import BaseUser, SimpleUser
17
- from jam.jwt import create_instance as create_jwt
17
+ from jam.jose import create_instance as create_jwt
18
18
  from jam.paseto import create_instance as create_paseto
19
19
  from jam.utils.config_maker import GENERIC_POINTER, __config_maker__
20
20
 
@@ -141,7 +141,8 @@ class JWTBackend(BaseBackend):
141
141
  if self._auth.list.check(token):
142
142
  return AuthCredentials(None), UnauthenticatedUser()
143
143
  data = self._auth.decode(token)
144
- user = self._user.from_payload(data)
144
+ payload = data.get("payload", data)
145
+ user = self._user.from_payload(payload)
145
146
  return AuthCredentials(["authenticated"]), user
146
147
 
147
148
  return AuthCredentials(None), UnauthenticatedUser()
@@ -0,0 +1,55 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ """JOSE tools."""
4
+
5
+ from typing import Any
6
+
7
+ from jam.jose.jwk import JWK, JWKOct, JWKSet, JWKRSA, JWKEC
8
+ from jam.jose.jws import JWS
9
+ from jam.jose.jwe import JWE
10
+ from jam.jose.jwt import JWT
11
+ from jam.logger import BaseLogger, logger
12
+ from jam.encoders import BaseEncoder, JsonEncoder
13
+
14
+
15
+ def create_instance(
16
+ alg: str,
17
+ secret: Any = None,
18
+ secret_key: Any = None,
19
+ password: str | bytes | None = None,
20
+ list: dict[str, Any] | None = None,
21
+ logger: BaseLogger = logger,
22
+ serializer: BaseEncoder | type[BaseEncoder] = JsonEncoder,
23
+ **kwargs: Any,
24
+ ) -> JWT:
25
+ """Create JWT instance."""
26
+ if secret is None and secret_key is not None:
27
+ secret = secret_key
28
+ elif secret is None:
29
+ raise ValueError("Either 'secret' or 'secret_key' must be provided")
30
+
31
+ key = secret
32
+ if isinstance(secret, JWK):
33
+ key = secret._to_keylike()
34
+
35
+ return JWT(
36
+ alg=alg,
37
+ secret_key=key,
38
+ password=password,
39
+ list=list,
40
+ serializer=serializer,
41
+ logger=logger,
42
+ )
43
+
44
+
45
+ __all__ = [
46
+ "JWK",
47
+ "JWKSet",
48
+ "JWS",
49
+ "JWE",
50
+ "JWT",
51
+ "JWKRSA",
52
+ "JWKEC",
53
+ "JWKOct",
54
+ "create_instance",
55
+ ]
@@ -62,4 +62,4 @@ def create_instance(
62
62
  )
63
63
 
64
64
 
65
- __all__ = ["JWT", "BaseJWT", "create_instance"]
65
+ __all__ = ["JWT", "BaseJWT", "create_instance"]
@@ -7,7 +7,7 @@ import uuid
7
7
 
8
8
  from jam.aio import Jam as AioJam
9
9
  from jam.instance import Jam
10
- from jam.jwt.utils import base64url_decode
10
+ from jam.jose.utils import __base64url_decode__ as base64url_decode
11
11
  from jam.tests.fakers import (
12
12
  fake_jwt_token,
13
13
  fake_oauth2_token,
@@ -5,7 +5,7 @@ from secrets import token_urlsafe
5
5
  from typing import Any
6
6
  import uuid
7
7
 
8
- from jam.jwt.utils import base64url_encode
8
+ from jam.jose.utils import __base64url_encode__ as base64url_encode
9
9
  from jam.utils import xor_my_data
10
10
 
11
11
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jamlib
3
- Version: 3.2.0b1
3
+ Version: 3.2.0b2
4
4
  Summary: Simple and universal library for authorization.
5
5
  Author-email: Makridenko Adrian <adrianmakridenko@duck.com>, Ksenia Travnikova <kseniatravnikova@duck.com>
6
6
  License: Apache-2.0
@@ -1,19 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- """JOSE tools."""
4
-
5
- from jam.jose.jwk import JWK, JWKOct, JWKSet, JWKRSA, JWKEC
6
- from jam.jose.jws import JWS
7
- from jam.jose.jwe import JWE
8
- from jam.jose.jwt import JWT
9
-
10
- __all__ = [
11
- "JWK",
12
- "JWKSet",
13
- "JWS",
14
- "JWE",
15
- "JWT",
16
- "JWKRSA",
17
- "JWKEC",
18
- "JWKOct",
19
- ]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes