Skip to content

Commit

Permalink
Very experimental
Browse files Browse the repository at this point in the history
  • Loading branch information
sergi0g committed Mar 3, 2024
1 parent 2ae218f commit d595723
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions oidc_server/middleware.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from oidc_provider.models import Client
from oidc_provider.lib.errors import ClientIdError
from django.shortcuts import redirect
from re import sub

class HostMiddleware:
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.

def __call__(self, request):
query_dict = (self.request.POST if self.request.method == 'POST'
else self.request.GET)

host = query_dict.get('host', '')
redirect_uri = query_dict.get('redirect_uri', '')
client_id = query_dict.get('client_id', '')
if (host and redirect_uri) and host != redirect_uri:
try:
client = Client.objects.get(client_id=client_id)
for uri in client._redirect_uris:
if host in uri:
return redirect(sub(r"^http(s?):\/\/([^\/]+)(.+)", r"http\1://"+host, uri)+request.get_full_path())
except Client.DoesNotExist:
raise ClientIdError()
response = self.get_response(request)
return response

0 comments on commit d595723

Please sign in to comment.