feat: complete remaining Go backend modules
This commit is contained in:
1 parent
cea2751dc5
commit
aef5a97165
145 files changed
+18376
-199
No files matched your search
@@ -0,0 +1,41 @@
|
||||
package httpapi
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
// NewAuthCompatibilityHandler preserves the legacy external-login endpoints
|
||||
// after platform password login became the only supported authentication flow.
|
||||
func NewAuthCompatibilityHandler() http.Handler { return authCompatibilityHandler{} }
|
||||
|
||||
type authCompatibilityHandler struct{}
|
||||
|
||||
func (authCompatibilityHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path != "/api/auth/login" && r.URL.Path != "/api/auth/callback" && r.URL.Path != "/api/auth/captcha" {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
if r.Method != http.MethodGet {
|
||||
w.Header().Set("Allow", http.MethodGet)
|
||||
w.WriteHeader(http.StatusMethodNotAllowed)
|
||||
return
|
||||
}
|
||||
if r.URL.Path == "/api/auth/captcha" {
|
||||
writeJSON(w, http.StatusOK, map[string]any{"enabled": false, "message": "平台账号登录不使用外部验证码。"})
|
||||
return
|
||||
}
|
||||
location := "/auth/login"
|
||||
if r.URL.Path == "/api/auth/callback" {
|
||||
location += "?error=callback_failed"
|
||||
}
|
||||
if base, err := url.Parse(absoluteRequestURL(r)); err == nil && base.IsAbs() {
|
||||
base.Path, base.RawPath, base.RawQuery, base.Fragment = "/auth/login", "", "", ""
|
||||
if r.URL.Path == "/api/auth/callback" {
|
||||
base.RawQuery = "error=callback_failed"
|
||||
}
|
||||
location = base.String()
|
||||
}
|
||||
w.Header().Set("Location", location)
|
||||
w.WriteHeader(http.StatusTemporaryRedirect)
|
||||
}
|
||||
Reference in new issue
Block a user