From 4cb417a4487baba92be0758cef2ecd34db254e02 Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Mon, 28 Sep 2020 00:04:51 +0200 Subject: [PATCH 1/4] Add AuthenticatedHandler base class --- app.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app.py b/app.py index cd31e35..5dc8a51 100644 --- a/app.py +++ b/app.py @@ -18,6 +18,26 @@ from gitmgr import GitManagerConfiguration, GitManager startup_timestamp = datetime.now() +class AuthenticatedHandler(tornado.web.RequestHandler, metaclass=ABCMeta): + # noinspection PyAttributeOutsideInit + def initialize(self, auth_provider=None): + self.auth_provider = auth_provider + + def prepare(self): + if self.auth_provider is None: + return + + # check authentication + auth_hdr = "Authentication" + if auth_hdr not in self.request.headers: + raise tornado.web.HTTPError(401, reason="authentication not provided") + + tk = self.request.headers[auth_hdr] + + if not self.auth_provider.validate_token(tk): + raise tornado.web.HTTPError(403, reason="invalid authentication token provided") + + class HealthHandler(tornado.web.RequestHandler, metaclass=ABCMeta): # noinspection PyAttributeOutsideInit def initialize(self, sources=None): -- 2.45.2 From 95961d4b7b30667401630bc77c4c9ef84fe89ba2 Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Mon, 28 Sep 2020 00:07:00 +0200 Subject: [PATCH 2/4] Add routing for entities handlers --- app.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app.py b/app.py index 5dc8a51..88014a2 100644 --- a/app.py +++ b/app.py @@ -103,6 +103,8 @@ def make_app(_auth_provider=None, gitmgr=None): (version_path + r"/health", HealthHandler, {"sources": [lambda: {"git-head": gitmgr.head_sha}] if gitmgr else None}), (version_path + r"/oas3", Oas3Handler), + (version_path + r"/entities", AllEntitiesHandler, {"auth_provider": _auth_provider}), + (version_path + r"/entity/{.*}", SingleEntityHandler, {"auth_provider": _auth_provider}), ]) -- 2.45.2 From 309c0b50b1632024bebfca22aebcc7902ef9e4dd Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Mon, 28 Sep 2020 00:07:29 +0200 Subject: [PATCH 3/4] Add SingleEntityHandler stub --- app.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app.py b/app.py index 88014a2..07b93b9 100644 --- a/app.py +++ b/app.py @@ -97,6 +97,18 @@ class Oas3Handler(tornado.web.RequestHandler, metaclass=ABCMeta): self.finish() +class SingleEntityHandler(AuthenticatedHandler, metaclass=ABCMeta): + # noinspection PyAttributeOutsideInit + def initialize(self, auth_provider=None): + super().initialize(auth_provider) + + def post(self, identifier): + pass + + def get(self, identifier): + pass + + def make_app(_auth_provider=None, gitmgr=None): version_path = r"/v[0-9]" return tornado.web.Application([ -- 2.45.2 From e2128c8402f7f124274fd1efed767eed540b75f1 Mon Sep 17 00:00:00 2001 From: Stefan Haun Date: Mon, 28 Sep 2020 00:07:44 +0200 Subject: [PATCH 4/4] Add AllEntitiesHandler stub --- app.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app.py b/app.py index 07b93b9..691e2d4 100644 --- a/app.py +++ b/app.py @@ -97,6 +97,18 @@ class Oas3Handler(tornado.web.RequestHandler, metaclass=ABCMeta): self.finish() +class AllEntitiesHandler(AuthenticatedHandler, metaclass=ABCMeta): + # noinspection PyAttributeOutsideInit + def initialize(self, auth_provider=None): + super().initialize(auth_provider) + + def post(self): + pass + + def get(self): + pass + + class SingleEntityHandler(AuthenticatedHandler, metaclass=ABCMeta): # noinspection PyAttributeOutsideInit def initialize(self, auth_provider=None): -- 2.45.2