Skip to content

Commit 52dbf8d

Browse files
Fix bug that causes user redirect to login after email update
1 parent 88a65a8 commit 52dbf8d

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

main.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,15 +259,17 @@ async def read_dashboard(
259259
@app.get("/profile")
260260
async def read_profile(
261261
params: dict = Depends(common_authenticated_parameters),
262-
email_update_requested: Optional[str] = "false"
262+
email_update_requested: Optional[str] = "false",
263+
email_updated: Optional[str] = "false"
263264
):
264265
# Add image constraints to the template context
265266
params.update({
266267
"max_file_size_mb": MAX_FILE_SIZE / (1024 * 1024), # Convert bytes to MB
267268
"min_dimension": MIN_DIMENSION,
268269
"max_dimension": MAX_DIMENSION,
269270
"allowed_formats": list(ALLOWED_CONTENT_TYPES.keys()),
270-
"email_update_requested": email_update_requested
271+
"email_update_requested": email_update_requested,
272+
"email_updated": email_updated
271273
})
272274
return templates.TemplateResponse(params["request"], "users/profile.html", params)
273275

routers/authentication.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,20 @@ async def register(
195195
refresh_token = create_refresh_token(data={"sub": db_user.email})
196196
# Set cookie
197197
response = RedirectResponse(url="/", status_code=303)
198-
response.set_cookie(key="access_token", value=access_token, httponly=True)
199-
response.set_cookie(key="refresh_token",
200-
value=refresh_token, httponly=True)
198+
response.set_cookie(
199+
key="access_token",
200+
value=access_token,
201+
httponly=True,
202+
secure=True,
203+
samesite="strict"
204+
)
205+
response.set_cookie(
206+
key="refresh_token",
207+
value=refresh_token,
208+
httponly=True,
209+
secure=True,
210+
samesite="strict"
211+
)
201212

202213
return response
203214

@@ -390,25 +401,28 @@ async def confirm_email_update(
390401
session.commit()
391402

392403
# Create new tokens with the updated email
393-
access_token = create_access_token(data={"sub": new_email})
404+
access_token = create_access_token(data={"sub": new_email, "fresh": True})
394405
refresh_token = create_refresh_token(data={"sub": new_email})
395406

407+
# Set cookies before redirecting
396408
response = RedirectResponse(
397409
url="/profile?email_updated=true",
398410
status_code=303
399411
)
412+
413+
# Add secure cookie attributes
400414
response.set_cookie(
401415
key="access_token",
402416
value=access_token,
403417
httponly=True,
404418
secure=True,
405-
samesite="strict"
419+
samesite="lax"
406420
)
407421
response.set_cookie(
408422
key="refresh_token",
409423
value=refresh_token,
410424
httponly=True,
411425
secure=True,
412-
samesite="strict"
426+
samesite="lax"
413427
)
414428
return response

0 commit comments

Comments
 (0)