diff --git a/backend/app/routers/broker.py b/backend/app/routers/broker.py index 188b453..b41a4f4 100644 --- a/backend/app/routers/broker.py +++ b/backend/app/routers/broker.py @@ -30,11 +30,15 @@ def _require_user(request: Request): return user -def _build_saved_broker_login_url(request: Request, user_id: str) -> str: +def _build_saved_broker_login_url( + request: Request, + user_id: str, + redirect_url_override: str | None = None, +) -> str: creds = get_broker_credentials(user_id) if not creds: raise HTTPException(status_code=400, detail="Broker credentials not configured") - redirect_url = (os.getenv("ZERODHA_REDIRECT_URL") or "").strip() + redirect_url = (redirect_url_override or os.getenv("ZERODHA_REDIRECT_URL") or "").strip() if not redirect_url: base = str(request.base_url).rstrip("/") redirect_url = f"{base}/api/broker/callback" @@ -164,14 +168,24 @@ async def zerodha_callback(request: Request, request_token: str = ""): @router.get("/login") async def broker_login(request: Request): user = _require_user(request) - login_url = _build_saved_broker_login_url(request, user["id"]) + redirect_url = ( + (request.query_params.get("redirectUrl") or request.query_params.get("redirect_url") or "") + .strip() + or None + ) + login_url = _build_saved_broker_login_url(request, user["id"], redirect_url) return RedirectResponse(login_url) @router.get("/login-url") async def broker_login_url(request: Request): user = _require_user(request) - return {"loginUrl": _build_saved_broker_login_url(request, user["id"])} + redirect_url = ( + (request.query_params.get("redirectUrl") or request.query_params.get("redirect_url") or "") + .strip() + or None + ) + return {"loginUrl": _build_saved_broker_login_url(request, user["id"], redirect_url)} @router.get("/callback")