Skip to content

Commit

Permalink
better urlparse
Browse files Browse the repository at this point in the history
  • Loading branch information
BinamB committed Aug 14, 2020
1 parent e1f24bc commit 997eb5d
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions fence/blueprints/login/base.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import flask
from flask_restful import Resource
from urllib.parse import urlparse, urljoin
from urllib.parse import urlparse, urlencode, parse_qsl

from fence.auth import login_user
from fence.blueprints.login.redirect import validate_redirect
Expand Down Expand Up @@ -70,14 +70,22 @@ def __init__(self, idp_name, client, username_field="email"):
self.username_field = username_field

def get(self):

# Check if user granted access
if flask.request.args.get("error"):
# Check if user granted access
url = flask.request.url
parsed_url = urlparse(url)
location = flask.session.get("redirect") or config["BASE_URL"]
redirect_url = urljoin(location, parsed_url.path)
return flask.redirect(location=redirect_url)
reqiest_url = flask.request.url
received_query_params = parse_qsl(
urlparse(reqiest_url).query, keep_blank_values=True
)
redirect_uri = flask.session.get("redirect") or config["BASE_URL"]
redirect_query_params = parse_qsl(
urlparse(redirect_uri).query, keep_blank_values=True
)
final_query_params = urlencode(
redirect_query_params + received_query_params
)
final_redirect_url = redirect_uri.split("?")[0] + "?" + final_query_params

return flask.redirect(location=final_redirect_url)

code = flask.request.args.get("code")
result = self.client.get_user_id(code)
Expand Down

0 comments on commit 997eb5d

Please sign in to comment.