Fix absolute urls for swagger-ui oauth settings
parent
9d933a9745
commit
de950461c7
|
|
@ -3,7 +3,6 @@ import six
|
|||
import collections
|
||||
import logging
|
||||
import re
|
||||
import sys
|
||||
from collections import OrderedDict
|
||||
|
||||
from coreapi.compat import urlparse
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ import six
|
|||
|
||||
from django.shortcuts import resolve_url
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.functional import Promise
|
||||
from rest_framework.renderers import BaseRenderer, JSONRenderer, TemplateHTMLRenderer
|
||||
from rest_framework.utils import encoders, json
|
||||
|
|
@ -120,7 +121,14 @@ class SwaggerUIRenderer(_UIRenderer):
|
|||
|
||||
def set_context(self, renderer_context, swagger=None):
|
||||
super(SwaggerUIRenderer, self).set_context(renderer_context, swagger)
|
||||
renderer_context['swagger_settings'] = json.dumps(self.get_swagger_ui_settings(), cls=encoders.JSONEncoder)
|
||||
swagger_ui_settings = self.get_swagger_ui_settings()
|
||||
|
||||
request = renderer_context['request']
|
||||
oauth_redirect_url = force_text(swagger_ui_settings.get('oauth2RedirectUrl', ''))
|
||||
if request and oauth_redirect_url:
|
||||
swagger_ui_settings['oauth2RedirectUrl'] = request.build_absolute_uri(oauth_redirect_url)
|
||||
|
||||
renderer_context['swagger_settings'] = json.dumps(swagger_ui_settings, cls=encoders.JSONEncoder)
|
||||
|
||||
def get_swagger_ui_settings(self):
|
||||
data = {
|
||||
|
|
|
|||
|
|
@ -192,7 +192,6 @@ function initSwaggerUiConfig(swaggerSettings, oauth2Settings) {
|
|||
var oldResponseInterceptor = swaggerUiConfig.responseInterceptor;
|
||||
swaggerUiConfig.responseInterceptor = function (response) {
|
||||
var absUrl = new URL(response.url, currentPath);
|
||||
console.log("response", response);
|
||||
if (absUrl.href in specRequestsInFlight) {
|
||||
var setToUrl = specRequestsInFlight[absUrl.href];
|
||||
delete specRequestsInFlight[absUrl.href];
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import os
|
|||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
from django.urls import reverse_lazy
|
||||
|
||||
from testproj.util import full_url_lazy, static_lazy
|
||||
from testproj.util import static_lazy
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
|
|
@ -100,9 +100,9 @@ OAUTH2_CLIENT_SECRET = '5FvYALo7W4uNnWE2ySw7Yzpkxh9PSf5GuY37RvOys00ydEyph64dbl1E
|
|||
'AKoz0JpiVQtq0DUnsxNhU3ubrJgZ9YbtiXymbLGJq8L7n4fiER7gXbXaNSbze3BN'
|
||||
OAUTH2_APP_NAME = 'drf-yasg OAuth2 provider'
|
||||
|
||||
OAUTH2_REDIRECT_URL = full_url_lazy(static_lazy('drf-yasg/swagger-ui-dist/oauth2-redirect.html'))
|
||||
OAUTH2_AUTHORIZE_URL = full_url_lazy(reverse_lazy('oauth2_provider:authorize'))
|
||||
OAUTH2_TOKEN_URL = full_url_lazy(reverse_lazy('oauth2_provider:token'))
|
||||
OAUTH2_REDIRECT_URL = static_lazy('drf-yasg/swagger-ui-dist/oauth2-redirect.html')
|
||||
OAUTH2_AUTHORIZE_URL = reverse_lazy('oauth2_provider:authorize')
|
||||
OAUTH2_TOKEN_URL = reverse_lazy('oauth2_provider:token')
|
||||
|
||||
# drf-yasg
|
||||
SWAGGER_SETTINGS = {
|
||||
|
|
|
|||
|
|
@ -4,14 +4,4 @@ from django.utils.encoding import force_text
|
|||
from django.utils.functional import lazy
|
||||
|
||||
|
||||
def full_url(absolute_path):
|
||||
try:
|
||||
return "http://test.local:8002" + force_text(absolute_path)
|
||||
except NoReverseMatch:
|
||||
# if absolute_path is a resolve_lazy, it might point to an invalid name
|
||||
# just ignore it if it does
|
||||
return "http://test.local:8002/no-reverse-match/"
|
||||
|
||||
|
||||
full_url_lazy = lazy(full_url, str)
|
||||
static_lazy = lazy(static, str)
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
# Generated by Django 2.1.3 on 2018-12-19 07:57
|
||||
from django.conf import settings
|
||||
from django.contrib.staticfiles.templatetags.staticfiles import static
|
||||
from django.db import migrations, IntegrityError
|
||||
|
||||
from testproj.util import full_url_lazy
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
def add_oauth_apps(apps, schema_editor):
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ securityDefinitions:
|
|||
scopes:
|
||||
read: Read everything.
|
||||
write: Write everything,
|
||||
tokenUrl: http://test.local:8002/o/token/
|
||||
tokenUrl: /o/token/
|
||||
type: oauth2
|
||||
Query:
|
||||
in: query
|
||||
|
|
|
|||
Loading…
Reference in New Issue