Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ htmlcov/
.idea/
.vscode/
venv/
src/
src/
10 changes: 9 additions & 1 deletion connexion/apis/abstract.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ class AbstractAPI(metaclass=AbstractAPIMeta):
def __init__(self, specification, base_path=None, arguments=None,
validate_responses=False, strict_validation=False, resolver=None,
auth_all_paths=False, debug=False, resolver_error_handler=None,
validator_map=None, pythonic_params=False, pass_context_arg_name=None, options=None):
validator_map=None, pythonic_params=False, pass_context_arg_name=None, options=None,
):
"""
:type specification: pathlib.Path | dict
:type base_path: str | None
Expand Down Expand Up @@ -101,6 +102,8 @@ def __init__(self, specification, base_path=None, arguments=None,
logger.debug('pass_context_arg_name: %s', pass_context_arg_name)
self.pass_context_arg_name = pass_context_arg_name

self.security_handler_factory = self.make_security_handler_factory(pass_context_arg_name)

This comment was marked as resolved.


if self.options.openapi_spec_available:
self.add_openapi_json()
self.add_openapi_yaml()
Expand Down Expand Up @@ -143,6 +146,11 @@ def add_auth_on_not_found(self, security, security_definitions):
Adds a 404 error handler to authenticate and only expose the 404 status if the security validation pass.
"""

@staticmethod
@abc.abstractmethod
def make_security_handler_factory(pass_context_arg_name):
""" Create SecurityHandlerFactory to create all security check handlers """

def add_operation(self, path, method):
"""
Adds one operation to the api.
Expand Down
6 changes: 6 additions & 0 deletions connexion/apis/aiohttp_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
from connexion.lifecycle import ConnexionRequest, ConnexionResponse
from connexion.problem import problem
from connexion.utils import yamldumper
from connexion.security import AioHttpSecurityHandlerFactory
from werkzeug.exceptions import HTTPException as werkzeug_HTTPException


Expand Down Expand Up @@ -105,6 +106,11 @@ def __init__(self, *args, **kwargs):
middlewares = self.options.as_dict().get('middlewares', [])
self.subapp.middlewares.extend(middlewares)

@staticmethod
def make_security_handler_factory(pass_context_arg_name):
""" Create default SecurityHandlerFactory to create all security check handlers """
return AioHttpSecurityHandlerFactory(pass_context_arg_name)

def _set_base_path(self, base_path):
AbstractAPI._set_base_path(self, base_path)
self._api_name = AioHttpApi.normalize_string(self.base_path)
Expand Down
6 changes: 6 additions & 0 deletions connexion/apis/flask_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,19 @@
from connexion.jsonifier import Jsonifier
from connexion.lifecycle import ConnexionRequest, ConnexionResponse
from connexion.utils import is_json_mimetype, yamldumper
from connexion.security import FlaskSecurityHandlerFactory
from werkzeug.local import LocalProxy

logger = logging.getLogger('connexion.apis.flask_api')


class FlaskApi(AbstractAPI):

@staticmethod
def make_security_handler_factory(pass_context_arg_name):
""" Create default SecurityHandlerFactory to create all security check handlers """
return FlaskSecurityHandlerFactory(pass_context_arg_name)

def _set_base_path(self, base_path):
super(FlaskApi, self)._set_base_path(base_path)
self._set_blueprint()
Expand Down
Loading