From 9592f37756fa810c168e6bffebf7e9d4343d1d8a Mon Sep 17 00:00:00 2001 From: SocietyMoment <101757777+SocietyMoment@users.noreply.github.com> Date: Thu, 17 Mar 2022 03:14:46 -0400 Subject: [PATCH] Fixed oauth error (#223) --- files/routes/oauth.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/files/routes/oauth.py b/files/routes/oauth.py index 388c392df..237365a87 100644 --- a/files/routes/oauth.py +++ b/files/routes/oauth.py @@ -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}")