Fixed oauth error (#223)

remotes/1693045480750635534/spooky-22
SocietyMoment 2022-03-17 03:14:46 -04:00 committed by GitHub
parent 1122d1ca23
commit 9592f37756
1 changed files with 9 additions and 4 deletions

View File

@ -5,6 +5,7 @@ from files.helpers.const import *
from files.classes import *
from flask import *
from files.__main__ import app, limiter
import sqlalchemy.exc
@app.get("/authorize")
@auth_required
@ -24,11 +25,15 @@ def authorize(v):
application = g.db.query(OauthApp).filter_by(client_id=client_id).one_or_none()
if not application: return {"oauth_error": "Invalid `client_id`"}, 401
access_token = secrets.token_urlsafe(128)[:128]
new_auth = ClientAuth(oauth_client = application.id, user_id = v.id, access_token=access_token)
g.db.add(new_auth)
g.db.commit()
try:
new_auth = ClientAuth(oauth_client = application.id, user_id = v.id, access_token=access_token)
g.db.add(new_auth)
g.db.commit()
except sqlalchemy.exc.IntegrityError:
g.db.rollback()
old_auth = g.db.query(ClientAuth).filter_by(oauth_client = application.id, user_id = v.id).one()
access_token = old_auth.access_token
return redirect(f"{application.redirect_uri}?token={access_token}")