add request.scope['config'] when there is a section with the domains name in the project's configuration
This commit is contained in:
parent
61aec6871a
commit
4782764059
|
@ -16,12 +16,9 @@ def connected(fct=public):
|
|||
"""
|
||||
@wraps(fct)
|
||||
def caller(req, *args, **kwargs):
|
||||
print(fct)
|
||||
print(req.user)
|
||||
if (not hasattr(req, 'user')
|
||||
or isinstance(req.user, UnauthenticatedUser)
|
||||
or not hasattr(req.user, 'is_authenticated')):
|
||||
print('Connected is false')
|
||||
return False
|
||||
|
||||
return fct(req, **{**kwargs, **req.path_params})
|
||||
|
|
|
@ -158,11 +158,13 @@ def gen_domain_routes(domain: str, m_dom: ModuleType) -> Generator:
|
|||
If not, it is considered as empty
|
||||
"""
|
||||
|
||||
m_router = None
|
||||
try:
|
||||
m_router = importlib.import_module('.routers', domain)
|
||||
except ImportError:
|
||||
logger.warning('Domain **%s** has no **routers** module', domain)
|
||||
logger.debug('%s', m_dom)
|
||||
m_router = importlib.import_module('.routers', f'.{domain}')
|
||||
|
||||
if m_router:
|
||||
yield from gen_router_routes(m_router, [domain])
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
"""
|
||||
DomainMiddleware
|
||||
"""
|
||||
import logging
|
||||
|
||||
from starlette.datastructures import URL
|
||||
from starlette.middleware.base import (BaseHTTPMiddleware,
|
||||
RequestResponseEndpoint)
|
||||
from starlette.requests import Request
|
||||
|
@ -10,6 +12,9 @@ from starlette.types import Scope, Send, Receive
|
|||
|
||||
from .routes import api_routes
|
||||
from .domain import d_domains
|
||||
from ..conf import config_dict
|
||||
|
||||
logger = logging.getLogger('uvicorn.asgi')
|
||||
|
||||
class DomainMiddleware(BaseHTTPMiddleware):
|
||||
"""
|
||||
|
@ -41,6 +46,18 @@ class DomainMiddleware(BaseHTTPMiddleware):
|
|||
scope_['domains'] = self.domains
|
||||
scope_['api'] = self.api
|
||||
scope_['acl'] = self.acl
|
||||
|
||||
cur_path = URL(scope=scope).path
|
||||
if cur_path[0] == '/':
|
||||
current_domain = cur_path[1:].split('/')[0]
|
||||
else:
|
||||
current_domain = cur_path.split('/')[0]
|
||||
|
||||
if len(current_domain):
|
||||
config_section = self.config.items(current_domain)
|
||||
scope_['config'] = dict(config_section)
|
||||
|
||||
|
||||
request = Request(scope_, receive)
|
||||
response = await self.dispatch(request, self.call_next)
|
||||
await response(scope_, receive, send)
|
||||
|
|
Loading…
Reference in New Issue