Skip to content

Commit

Permalink
Fix: reworked the developer audience; it now asks for a username
Browse files Browse the repository at this point in the history
  • Loading branch information
TrueBrain committed Apr 19, 2020
1 parent 8959f0a commit 90490aa
Showing 1 changed file with 20 additions and 4 deletions.
24 changes: 20 additions & 4 deletions bananas_api/user/developer.py
Expand Up @@ -13,7 +13,16 @@ class User(BaseUser):
routes = web.RouteTableDef()

def get_authorize_page(self):
return web.json_response({"developer-code": self.code})
return web.Response(body=
"<html><body>"
"<h1>Developer login</h1>"
"Username:"
"<form method=POST action='/user/developer'>"
f"<input type='hidden' name='code' value='{self.code}'>"
"<input type='text' name='username'>"
"<input type='submit' value='Login'>"
"</form></body></html>",
content_type="text/html")

def force_login(self, username):
self.id = username
Expand All @@ -22,12 +31,19 @@ def force_login(self, username):
@staticmethod
@routes.post("/user/developer")
async def login_github_callback(request):
data = await request.json()
data = await request.text()

username = data["username"]
code = data["code"]
payload = {}
for key_value in data.split("&"):
key, _, value = key_value.partition("=")
payload[key] = value

username = payload["username"]
code = payload["code"]

user = get_user_by_code(code)
if not user:
return web.HTTPNotFound()
user.force_login(username)

return web.HTTPFound(location=f"{user.redirect_uri}?code={user.code}")

0 comments on commit 90490aa

Please sign in to comment.