jamlib 3.0.0b12.dev2__tar.gz → 3.0.0b12.dev4__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.
- {jamlib-3.0.0b12.dev2/src/jamlib.egg-info → jamlib-3.0.0b12.dev4}/PKG-INFO +1 -1
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/pyproject.toml +1 -1
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/__init__.py +1 -1
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/litestar/__init__.py +9 -1
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/litestar/middleware.py +23 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/litestar/plugins.py +49 -3
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4/src/jamlib.egg-info}/PKG-INFO +1 -1
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/LICENSE.md +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/README.md +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/setup.cfg +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/__base_encoder__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/__deprecated__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/instance.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/jwt/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/builtin/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/builtin/github.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/builtin/gitlab.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/builtin/google.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/builtin/yandex.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/oauth2/client.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/sessions/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/sessions/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/sessions/json.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/aio/sessions/redis.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/encoders.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/exceptions/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/exceptions/base.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/exceptions/jwt.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/exceptions/oauth2.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/exceptions/paseto.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/exceptions/plugins.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/exceptions/sessions.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/fastapi/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/flask/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/flask/extensions.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/litestar/objects.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/starlette/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/starlette/auth_backends.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/ext/starlette/value.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/instance.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/__algorithms__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/__types__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/lists/__abc_list_repo__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/lists/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/lists/json.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/lists/redis.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/module.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/jwt/utils.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/logger.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/builtin/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/builtin/github.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/builtin/gitlab.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/builtin/google.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/builtin/yandex.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/oauth2/client.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/otp/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/otp/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/otp/hotp.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/otp/totp.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/paseto/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/paseto/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/paseto/utils.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/paseto/v1.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/paseto/v2.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/paseto/v3.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/paseto/v4.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/py.typed +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/sessions/__base__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/sessions/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/sessions/json.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/sessions/redis.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/tests/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/tests/clients.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/tests/fakers.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/__init__.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/aes.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/await_maybe.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/basic_auth.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/config_maker.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/ed.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/otp_keys.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/rsa.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/salt_hash.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/symmetric.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/xchacha20poly1305.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jam/utils/xor.py +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jamlib.egg-info/SOURCES.txt +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jamlib.egg-info/dependency_links.txt +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/src/jamlib.egg-info/requires.txt +0 -0
- {jamlib-3.0.0b12.dev2 → jamlib-3.0.0b12.dev4}/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.0.0b12.
|
|
3
|
+
Version: 3.0.0b12.dev4
|
|
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
|
|
@@ -12,7 +12,13 @@ from .objects import (
|
|
|
12
12
|
Token
|
|
13
13
|
)
|
|
14
14
|
|
|
15
|
-
from .plugins import
|
|
15
|
+
from .plugins import (
|
|
16
|
+
BasePlugin,
|
|
17
|
+
JamJWTPlugin,
|
|
18
|
+
JamSessionPlugin,
|
|
19
|
+
JamPASETOPlugin,
|
|
20
|
+
JamOAuth2Plugin,
|
|
21
|
+
)
|
|
16
22
|
|
|
17
23
|
__all__ = [
|
|
18
24
|
"BaseUser",
|
|
@@ -21,4 +27,6 @@ __all__ = [
|
|
|
21
27
|
"BasePlugin",
|
|
22
28
|
"JamJWTPlugin",
|
|
23
29
|
"JamSessionPlugin",
|
|
30
|
+
"JamPASETOPlugin",
|
|
31
|
+
"JamOAuth2Plugin",
|
|
24
32
|
]
|
|
@@ -12,6 +12,7 @@ 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
14
|
from jam.jwt import JWT
|
|
15
|
+
from jam.paseto import BasePASETO
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
class BaseMiddleware(AbstractAuthenticationMiddleware):
|
|
@@ -79,3 +80,25 @@ class SessionMiddleware(BaseMiddleware):
|
|
|
79
80
|
return AuthenticationResult(user, token)
|
|
80
81
|
except Exception as e:
|
|
81
82
|
raise JamLitestarPluginError(message=str(e))
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class PASETOMiddleware(BaseMiddleware):
|
|
86
|
+
"""Middleware for PASETO."""
|
|
87
|
+
|
|
88
|
+
AUTH_MODULE: BasePASETO
|
|
89
|
+
|
|
90
|
+
async def authenticate_request( # noqa
|
|
91
|
+
self, connection: ASGIConnection
|
|
92
|
+
) -> AuthenticationResult:
|
|
93
|
+
token = self._get_auth_token(connection)
|
|
94
|
+
token_model = Token(token=token)
|
|
95
|
+
if not token:
|
|
96
|
+
return AuthenticationResult(None, auth=token_model)
|
|
97
|
+
try:
|
|
98
|
+
data = self.AUTH_MODULE.decode(token)
|
|
99
|
+
if not data:
|
|
100
|
+
return AuthenticationResult(None, auth=token_model)
|
|
101
|
+
user = self.USER.from_payload(data)
|
|
102
|
+
return AuthenticationResult(user, token)
|
|
103
|
+
except Exception as e:
|
|
104
|
+
raise JamLitestarPluginError(message=str(e))
|
|
@@ -7,15 +7,18 @@ from litestar.config.app import AppConfig
|
|
|
7
7
|
from litestar.di import Provide
|
|
8
8
|
from litestar.plugins import InitPlugin
|
|
9
9
|
|
|
10
|
-
from jam.aio.sessions import create_instance
|
|
10
|
+
from jam.aio.sessions import create_instance as create_session
|
|
11
11
|
from jam.exceptions import JamLitestarPluginConfigError
|
|
12
12
|
from jam.ext.litestar.middleware import (
|
|
13
13
|
BaseMiddleware,
|
|
14
14
|
JWTMiddleware,
|
|
15
|
+
PASETOMiddleware,
|
|
15
16
|
SessionMiddleware,
|
|
16
17
|
)
|
|
17
18
|
from jam.ext.litestar.objects import BaseUser
|
|
18
19
|
from jam.jwt import JWT
|
|
20
|
+
from jam.oauth2 import create_instance as create_oauth2
|
|
21
|
+
from jam.paseto import create_instance as create_paseto
|
|
19
22
|
from jam.utils.config_maker import GENERIC_POINTER, __config_maker__
|
|
20
23
|
|
|
21
24
|
|
|
@@ -92,9 +95,52 @@ class JamJWTPlugin(BasePlugin):
|
|
|
92
95
|
|
|
93
96
|
|
|
94
97
|
class JamSessionPlugin(BasePlugin):
|
|
95
|
-
"""
|
|
98
|
+
"""Sessions plugin for litestar."""
|
|
96
99
|
|
|
97
|
-
MODULE = staticmethod(
|
|
100
|
+
MODULE = staticmethod(create_session)
|
|
98
101
|
_MIDDLEWARE = SessionMiddleware
|
|
99
102
|
_DI_KEY = "session"
|
|
100
103
|
_CONFIG_KEY = "sessions"
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class JamPASETOPlugin(BasePlugin):
|
|
107
|
+
"""PASETO plugin for litestar."""
|
|
108
|
+
|
|
109
|
+
MODULE = staticmethod(create_paseto)
|
|
110
|
+
_MIDDLEWARE = PASETOMiddleware
|
|
111
|
+
_DI_KEY = "paseto"
|
|
112
|
+
_CONFIG_KEY = "paseto"
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class JamOAuth2Plugin(BasePlugin):
|
|
116
|
+
"""OAuth2 plugin."""
|
|
117
|
+
|
|
118
|
+
MODULE = staticmethod(create_oauth2)
|
|
119
|
+
_DI_KEY = "oauth2"
|
|
120
|
+
_CONFIG_KEY = "oauth2"
|
|
121
|
+
|
|
122
|
+
def __init__(
|
|
123
|
+
self,
|
|
124
|
+
config: str | dict[str, Any] | None = None,
|
|
125
|
+
pointer: str = GENERIC_POINTER,
|
|
126
|
+
**kwargs,
|
|
127
|
+
) -> None:
|
|
128
|
+
"""Initialize the OAuth2 plugin.
|
|
129
|
+
|
|
130
|
+
Args:
|
|
131
|
+
config (str | dict[str, Any] | None): The configuration for the OAuth2 plugin.
|
|
132
|
+
pointer (str): The pointer to the configuration in the app config.
|
|
133
|
+
**kwargs: Additional keyword arguments.
|
|
134
|
+
"""
|
|
135
|
+
_config: dict[str, Any] | None = (
|
|
136
|
+
__config_maker__(config, pointer) if config else None
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
params = _config.pop(self._CONFIG_KEY) if _config else kwargs
|
|
140
|
+
self._setup_config(params)
|
|
141
|
+
|
|
142
|
+
def on_app_init(self, app_config: AppConfig) -> AppConfig: # noqa
|
|
143
|
+
app_config.dependencies[self._DI_KEY] = Provide(
|
|
144
|
+
lambda: self._auth, sync_to_thread=True
|
|
145
|
+
)
|
|
146
|
+
return app_config
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jamlib
|
|
3
|
-
Version: 3.0.0b12.
|
|
3
|
+
Version: 3.0.0b12.dev4
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|