fix(auth): keep subsystem oauth working without sso

This commit is contained in:
mac
2026-07-16 16:43:01 +08:00
parent cafa8bc840
commit 2835cf2576
3 changed files with 16 additions and 1 deletions
+8
View File
@@ -112,7 +112,15 @@ export const subsystemApi = {
const data = await response.json().catch(() => ({}))
if (response.status === 401) {
removeToken()
const configResponse = await fetch('/auth/api/v1/config', {
headers: { Accept: 'application/json' },
}).catch(() => null)
const config = await configResponse?.json().catch(() => ({}))
if (config?.sso_enabled === false) {
window.location.assign(`/login?redirect=${encodeURIComponent(`/subsystem?open_app=${openApp}`)}`)
} else {
redirectToSSO(openApp)
}
throw new Error('unauthorized')
}
if (!response.ok) {
+4
View File
@@ -81,6 +81,10 @@ const handleLocalLogin = async () => {
try {
await login(value, '')
const redirect = typeof route.query.redirect === 'string' ? route.query.redirect : '/'
if (redirect.startsWith('/auth/')) {
window.location.assign(redirect)
return
}
router.replace(redirect)
} finally {
loading.value = false
+3
View File
@@ -56,6 +56,9 @@ func (h *OAuthHandler) Authorize(c *gin.Context) {
user, ok := h.sessionUser(c)
if !ok {
loginURL := "/auth/api/v1/login/internal-sso?relay_state=" + url.QueryEscape(c.Request.URL.RequestURI())
if !h.cfg.SSOEnabled {
loginURL = "/login?redirect=" + url.QueryEscape(c.Request.URL.RequestURI())
}
c.Redirect(http.StatusFound, loginURL)
return
}