From aacfc552c5e8d03a945513e1832bb0e9d600c3db Mon Sep 17 00:00:00 2001 From: Nikhil Ranka Date: Thu, 27 Aug 2026 10:20:32 +0530 Subject: [PATCH] Fix SQLite OAuth login for large Google sub IDs Prevent int() overflow on 21-digit Google OAuth sub values by comparing as string only when number exceeds SQLite INTEGER (64-bit) limit. --- backend/open_webui/models/users.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index 3d132c529e..36e34ab751 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -367,7 +367,14 @@ class UsersTable: query = select(User).where(sub_expr == sub) # SQLite preserves JSON numeric type here; Postgres ->> already compares numeric JSON as text. if session.get_bind().dialect.name == 'sqlite' and sub.isdecimal(): - query = select(User).where(or_(sub_expr == sub, sub_expr == int(sub))) + try: + int_sub = int(sub) + if len(sub) <= 19: + query = select(User).where(or_(sub_expr == sub, sub_expr == int_sub)) + else: + query = select(User).where(sub_expr == sub) + except ValueError: + query = select(User).where(sub_expr == sub) row = (await session.execute(query)).scalars().first() return UserModel.model_validate(row) if row else None