Skip to content

Commit c366f75

Browse files
committed
Minor update: add next as optinal login parameter
1 parent e73e212 commit c366f75

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

soauth/api/login.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,30 @@ async def login(
5050
log: LoggerDependency,
5151
provider: AuthProviderDependency,
5252
app_id: UUID = Path(..., description="The app ID to authenticate against."),
53+
next: str | None = Query(
54+
None,
55+
description=(
56+
"Optional URL to redirect to after login. If not provided, the user will be redirected "
57+
"to the app's main page or the `Referer` header."
58+
),
59+
),
5360
) -> RedirectResponse:
5461
try:
5562
app = await app_service.read_by_id(app_id=app_id, conn=conn)
5663
except app_service.AppNotFound:
5764
raise HTTPException(status.HTTP_404_NOT_FOUND, detail=f"App {app_id} not found")
5865

66+
if next is not None:
67+
redirect_to = next
68+
elif request.headers.get("Referer", None) is not None:
69+
redirect_to = request.headers["Referer"]
70+
else:
71+
redirect_to = None
72+
73+
log = log.bind(redirect_to_after_login=redirect_to, app_id=app_id)
74+
5975
login_request = await login_service.create(
60-
app=app, redirect_to=request.headers.get("Referer", None), conn=conn, log=log
76+
app=app, redirect_to=redirect_to, conn=conn, log=log
6177
)
6278

6379
redirect_url = await provider.redirect(

0 commit comments

Comments
 (0)