Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
A
aisbf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexlab
aisbf
Commits
7b1132e4
Commit
7b1132e4
authored
Apr 20, 2026
by
Your Name
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add per-user callback endpoints for OAuth2
parent
616a3a42
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
3 deletions
+16
-3
main.py
main.py
+16
-3
No files found.
main.py
View file @
7b1132e4
...
@@ -12095,11 +12095,14 @@ def _stop_localhost_callback_server():
...
@@ -12095,11 +12095,14 @@ def _stop_localhost_callback_server():
# OAuth2 callback endpoint (receives callbacks from extension OR direct localhost)
# OAuth2 callback endpoint (receives callbacks from extension OR direct localhost)
@
app
.
get
(
"/dashboard/oauth2/callback"
)
@
app
.
get
(
"/dashboard/oauth2/callback"
)
@
app
.
get
(
"/dashboard/oauth2/callback/{user_id}/{provider}"
)
async
def
dashboard_oauth2_callback
(
async
def
dashboard_oauth2_callback
(
request
:
Request
,
request
:
Request
,
code
:
str
=
Query
(
None
),
code
:
str
=
Query
(
None
),
state
:
str
=
Query
(
None
),
state
:
str
=
Query
(
None
),
error
:
str
=
Query
(
None
)
error
:
str
=
Query
(
None
),
user_id
:
str
=
None
,
provider
:
str
=
None
):
):
"""
"""
Handle OAuth2 callback redirected from localhost.
Handle OAuth2 callback redirected from localhost.
...
@@ -12107,6 +12110,10 @@ async def dashboard_oauth2_callback(
...
@@ -12107,6 +12110,10 @@ async def dashboard_oauth2_callback(
This endpoint handles two scenarios:
This endpoint handles two scenarios:
1. Direct localhost callback (when browser is on same machine as AISBF)
1. Direct localhost callback (when browser is on same machine as AISBF)
2. Redirected callback from browser extension (when browser is remote)
2. Redirected callback from browser extension (when browser is remote)
When using /dashboard/oauth2/callback/{user_id}/{provider} format, we know
exactly which user and provider this callback belongs to, making state matching
unnecessary and guaranteeing 100
%
compatibility with claude-code's implementation.
"""
"""
try
:
try
:
if
error
:
if
error
:
...
@@ -12146,13 +12153,19 @@ async def dashboard_oauth2_callback(
...
@@ -12146,13 +12153,19 @@ async def dashboard_oauth2_callback(
'code'
:
code
,
'code'
:
code
,
'state'
:
state
,
'state'
:
state
,
'error'
:
error
,
'error'
:
error
,
'timestamp'
:
time
.
time
()
'timestamp'
:
time
.
time
(),
'user_id'
:
user_id
,
'provider'
:
provider
}
}
# Also try to store in session if cookie is available (same domain)
# Also try to store in session if cookie is available (same domain)
try
:
try
:
request
.
session
[
'oauth2_code'
]
=
code
request
.
session
[
'oauth2_code'
]
=
code
request
.
session
[
'oauth2_state'
]
=
state
request
.
session
[
'oauth2_state'
]
=
state
if
user_id
:
request
.
session
[
'oauth2_user_id'
]
=
user_id
if
provider
:
request
.
session
[
'oauth2_provider'
]
=
provider
except
:
except
:
pass
pass
...
@@ -12160,7 +12173,7 @@ async def dashboard_oauth2_callback(
...
@@ -12160,7 +12173,7 @@ async def dashboard_oauth2_callback(
referer
=
request
.
headers
.
get
(
'referer'
,
''
)
referer
=
request
.
headers
.
get
(
'referer'
,
''
)
is_direct_callback
=
'localhost:54545'
in
referer
or
'127.0.0.1:54545'
in
referer
is_direct_callback
=
'localhost:54545'
in
referer
or
'127.0.0.1:54545'
in
referer
logger
.
info
(
f
"OAuth2 callback received - Direct: {is_direct_callback}, State: {state[:10]}..., Code: {code[:10]}..."
)
logger
.
info
(
f
"OAuth2 callback received - Direct: {is_direct_callback},
User: {user_id}, Provider: {provider},
State: {state[:10]}..., Code: {code[:10]}..."
)
# Return success page with auto-close script
# Return success page with auto-close script
return
HTMLResponse
(
return
HTMLResponse
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment