aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2018-03-29 10:52:48 +0100
committerGravatar Gareth Coles <[email protected]>2018-03-29 10:52:48 +0100
commit0073f9ea6821a43aea9437707586af04dc0cbed2 (patch)
tree021b97e835f776796223cdec8f587cf17597cd5e
parentAdd PREFERRED_URL_SCHEME env var to fix `url_for()` (diff)
Attempt to fix HTTPS and more OAuth issues
-rw-r--r--pysite/base_route.py3
-rw-r--r--pysite/route_manager.py13
-rw-r--r--pysite/views/main/index.py3
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")