mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-11 06:43:16 +08:00
Restore uds-auth session on badge mount so login survives reload.
Calling /api/me only when opening the QR panel left users stuck on 未登录 until they clicked the badge. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
81ff8eb19f
commit
922abaa89e
1 changed files with 7 additions and 5 deletions
|
|
@ -486,7 +486,7 @@ window.__ModuleLoader__.load({
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearSessionIfAnonymous(sessions) {
|
function clearSessionIfAnonymous(sessions) {
|
||||||
// No startup /api/me — treat as anonymous until QR-triggered me sets logged-in.
|
// Until /api/me confirms login, treat as anonymous (AuthBadge refreshes me on mount).
|
||||||
if (isLoggedInInUi()) return
|
if (isLoggedInInUi()) return
|
||||||
try {
|
try {
|
||||||
if (sessions && typeof sessions.clear === 'function') sessions.clear()
|
if (sessions && typeof sessions.clear === 'function') sessions.clear()
|
||||||
|
|
@ -1214,7 +1214,9 @@ function reloadAfterLogin() {
|
||||||
}, [fbUser, fbPass, refreshUser])
|
}, [fbUser, fbPass, refreshUser])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
// Do NOT call /api/me on mount — only when loading the login QR (startQr).
|
// Restore session after login reload / refresh — cookie alone does not set the badge.
|
||||||
|
// (Previously me ran only inside startQr, so a click on「未登录」was required.)
|
||||||
|
void refreshUser()
|
||||||
fetchJson('/uds-auth/config.get')
|
fetchJson('/uds-auth/config.get')
|
||||||
.then((data) => { if (data?.value) setConfig((prev) => ({ ...prev, ...data.value })) })
|
.then((data) => { if (data?.value) setConfig((prev) => ({ ...prev, ...data.value })) })
|
||||||
.catch(() => {})
|
.catch(() => {})
|
||||||
|
|
@ -1222,7 +1224,7 @@ function reloadAfterLogin() {
|
||||||
.then((st) => setFallbackEnabled(!!st.enabled))
|
.then((st) => setFallbackEnabled(!!st.enabled))
|
||||||
.catch(() => { /* keep default true — do not hide emergency login */ })
|
.catch(() => { /* keep default true — do not hide emergency login */ })
|
||||||
return () => { stopQr() }
|
return () => { stopQr() }
|
||||||
}, [stopQr])
|
}, [refreshUser, stopQr])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!open || user) return undefined
|
if (!open || user) return undefined
|
||||||
|
|
@ -1651,7 +1653,7 @@ function reloadAfterLogin() {
|
||||||
}
|
}
|
||||||
// Deny folder pick by default — no race with native directory picker.
|
// Deny folder pick by default — no race with native directory picker.
|
||||||
const sync = () => {
|
const sync = () => {
|
||||||
// Attrs come from QR-triggered /api/me via AuthBadge — do not poll me here.
|
// Attrs come from AuthBadge /api/me (mount + login) — do not poll me here.
|
||||||
const canCreate = document.documentElement.getAttribute('data-uds-can-create-ws') === '1'
|
const canCreate = document.documentElement.getAttribute('data-uds-can-create-ws') === '1'
|
||||||
if (canCreate) clearGate()
|
if (canCreate) clearGate()
|
||||||
else installGate()
|
else installGate()
|
||||||
|
|
@ -1796,7 +1798,7 @@ function reloadAfterLogin() {
|
||||||
workspaceDispose = null
|
workspaceDispose = null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Deny open-workspace by default until QR-triggered /api/me proves canCreateWorkspace.
|
// Deny open-workspace by default until AuthBadge /api/me proves canCreateWorkspace.
|
||||||
freezeChoosers()
|
freezeChoosers()
|
||||||
|
|
||||||
const syncWorkspaceSlot = () => {
|
const syncWorkspaceSlot = () => {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue