console: add user token fn gateway
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user