Skip to content

Commit 78128b2

Browse files
fix: missing provider on user loader
1 parent df9be5f commit 78128b2

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

cursus/app.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from .apis import api_bp as api_bp_v1
1919
from .views import view_bp, oauth_bp
2020
from .util.extensions import db, migrate, ma, login_manager, assets, cache
21-
from .models import User, ActiveToken
21+
from .models import User, ActiveToken, Account
2222
from .util import generate_content_hash
2323

2424

@@ -119,20 +119,28 @@ def create_app() -> Flask:
119119

120120
@login_manager.user_loader
121121
def load_user(id):
122+
"""Load a user from the database"""
123+
122124
user_with_token = (
123-
db.session.query(ActiveToken.token, User)
125+
db.session.query(ActiveToken.token, Account.provider, User)
124126
.select_from(User)
125127
.outerjoin(ActiveToken, User.id == ActiveToken.user_id)
128+
.outerjoin(Account, Account.userId == User.id)
126129
.filter(User.id == id)
127130
.first()
128131
)
129132

133+
# In case the user id is sent but it's no longer in the database
134+
if not user_with_token:
135+
return None
136+
130137
# The above query returns a tuple of an API token and a User object
131138
# However, Flask-Login expects a User object, so we have to set the
132139
# active token manually
133-
user_with_token[1].active_token = user_with_token[0]
140+
user_with_token[2].provider = user_with_token[1]
141+
user_with_token[2].active_token = user_with_token[0]
134142

135-
return user_with_token[1]
143+
return user_with_token[2]
136144

137145
@login_manager.unauthorized_handler
138146
def handle_needs_login():

0 commit comments

Comments
 (0)