console: add user token fn gateway

This commit is contained in:
Naeel
2026-04-27 11:24:36 +03:00
parent e5ce0794a4
commit feb4ae735d
5 changed files with 229 additions and 26 deletions
+18 -2
View File
@@ -15,6 +15,22 @@ import (
// Использует приватный тип чтобы избежать коллизий с ключами из других пакетов.
type ctxKeyNS struct{}
func authTokenFromRequest(r *http.Request) string {
token := strings.TrimSpace(r.Header.Get("X-Auth-Token"))
if token != "" {
return token
}
authz := strings.TrimSpace(r.Header.Get("Authorization"))
if authz == "" {
return ""
}
const bearerPrefix = "Bearer "
if len(authz) >= len(bearerPrefix) && strings.EqualFold(authz[:len(bearerPrefix)], bearerPrefix) {
return strings.TrimSpace(authz[len(bearerPrefix):])
}
return ""
}
// userNS возвращает namespace пользователя из контекста запроса.
// Устанавливается в authMiddleware после успешной аутентификации.
func (s *Server) userNS(r *http.Request) string {
@@ -47,7 +63,7 @@ func (s *Server) authMiddleware(h http.HandlerFunc) http.HandlerFunc {
if sub != "" {
ns = namespaceFromSub(sub)
} else {
token := strings.TrimSpace(r.Header.Get("X-Auth-Token"))
token := authTokenFromRequest(r)
resolvedNS, err := s.resolveNamespaceForToken(token, env, true)
if err != nil {
writeJSONError(w, http.StatusUnauthorized, "unauthorized")
@@ -56,7 +72,7 @@ func (s *Server) authMiddleware(h http.HandlerFunc) http.HandlerFunc {
ns = resolvedNS
}
} else {
token := strings.TrimSpace(r.Header.Get("X-Auth-Token"))
token := authTokenFromRequest(r)
resolvedNS, err := s.resolveNamespaceForToken(token, env, false)
if err != nil {
writeJSONError(w, http.StatusUnauthorized, "unauthorized")