allow overwriting oauth callback host and scheme for local testing

This commit is contained in:
Laura Klünder 2016-10-04 18:12:04 +02:00
parent de6c485a3f
commit 5174f6765c
2 changed files with 14 additions and 1 deletions

View file

@ -1,5 +1,7 @@
from abc import ABC, abstractmethod
from urllib.parse import urlparse, urlunparse
from django.conf import settings
from django.urls.base import reverse
from django.utils.translation import ugettext_lazy as _
@ -19,7 +21,16 @@ class Hoster(ABC):
return Package.objects.filter(home_repo__startswith=self.base_url)
def _get_callback_uri(self, request):
return request.build_absolute_uri(reverse('editor.oauth.callback', kwargs={'hoster': self.name}))
uri = request.build_absolute_uri(reverse('editor.oauth.callback', kwargs={'hoster': self.name}))
if settings.OAUTH_CALLBACK_SCHEME is None and settings.OAUTH_CALLBACK_NETLOC is None:
return uri
parts = list(urlparse(uri))
if settings.OAUTH_CALLBACK_SCHEME is not None:
parts[0] = settings.OAUTH_CALLBACK_SCHEME
if settings.OAUTH_CALLBACK_NETLOC is not None:
parts[1] = settings.OAUTH_CALLBACK_NETLOC
return urlunparse(parts)
def _get_session_data(self, request):
request.session.modified = True

View file

@ -51,6 +51,8 @@ DIRECT_EDITING = config.getboolean('c3nav', 'direct_editing', fallback=DEBUG)
PUBLIC_PACKAGES = [n for n in config.get('c3nav', 'public_packages', fallback='').split(',') if n]
EDITOR_HOSTERS = OrderedDict((name[7:], data) for name, data in config.items() if name.startswith('hoster:'))
OAUTH_CALLBACK_SCHEME = config.get('c3nav', 'oauth_callback_scheme')
OAUTH_CALLBACK_NETLOC = config.get('c3nav', 'oauth_callback_netloc')
db_backend = config.get('database', 'backend', fallback='sqlite3')
DATABASES = {