diff options
author | 2018-03-29 10:52:48 +0100 | |
---|---|---|
committer | 2018-03-29 10:52:48 +0100 | |
commit | 0073f9ea6821a43aea9437707586af04dc0cbed2 (patch) | |
tree | 021b97e835f776796223cdec8f587cf17597cd5e | |
parent | Add PREFERRED_URL_SCHEME env var to fix `url_for()` (diff) |
Attempt to fix HTTPS and more OAuth issues
-rw-r--r-- | pysite/base_route.py | 3 | ||||
-rw-r--r-- | pysite/route_manager.py | 13 | ||||
-rw-r--r-- | pysite/views/main/index.py | 3 |
3 files changed, 15 insertions, 4 deletions
diff --git a/pysite/base_route.py b/pysite/base_route.py index 71a4c894..0c1c0357 100644 --- a/pysite/base_route.py +++ b/pysite/base_route.py @@ -5,7 +5,7 @@ from typing import Any from flask import Blueprint, Response, jsonify, render_template from flask.views import MethodView -from pysite.constants import ErrorCodes +from pysite.constants import DISCORD_OAUTH_REDIRECT, ErrorCodes from pysite.mixins import OauthMixin @@ -29,6 +29,7 @@ class BaseView(MethodView, OauthMixin): context["current_page"] = self.name context["view"] = self context["logged_in"] = self.logged_in + context["login_url"] = DISCORD_OAUTH_REDIRECT return render_template(template_names, **context) diff --git a/pysite/route_manager.py b/pysite/route_manager.py index 14ae22db..24d09ee2 100644 --- a/pysite/route_manager.py +++ b/pysite/route_manager.py @@ -4,7 +4,7 @@ import inspect import logging import os -from flask import Blueprint, Flask +from flask import Blueprint, Flask, _request_ctx_stack from flask_dance.contrib.discord import make_discord_blueprint from flask_sockets import Sockets @@ -76,6 +76,17 @@ class RouteManager: self.load_views(self.ws_blueprint, "pysite/views/ws") self.sockets.register_blueprint(self.ws_blueprint, url_prefix="/ws") + self.app.before_request(self.https_fixing_hook) # Try to fix HTTPS issues + + def https_fixing_hook(self): + """ + Attempt to fix HTTPS issues by modifying the request context stack + """ + + if _request_ctx_stack is not None: + reqctx = _request_ctx_stack.top + reqctx.url_adapter.url_scheme = PREFERRED_URL_SCHEME + def run(self): from gevent.pywsgi import WSGIServer from geventwebsocket.handler import WebSocketHandler diff --git a/pysite/views/main/index.py b/pysite/views/main/index.py index 8d0cb349..210eb057 100644 --- a/pysite/views/main/index.py +++ b/pysite/views/main/index.py @@ -1,6 +1,5 @@ # coding=utf-8 from pysite.base_route import RouteView -from pysite.constants import DISCORD_OAUTH_REDIRECT class IndexView(RouteView): @@ -8,4 +7,4 @@ class IndexView(RouteView): name = "index" def get(self): - return self.render("main/index.html", login_url=DISCORD_OAUTH_REDIRECT) + return self.render("main/index.html") |