package auth import "strings" func ExtractCustomHeadersFromMetadata(metadata map[string]any) map[string]string { if len(metadata) == 0 { return nil } raw, ok := metadata["headers"] if !ok || raw == nil { return nil } out := make(map[string]string) switch headers := raw.(type) { case map[string]string: for key, value := range headers { name := strings.TrimSpace(key) if name == "" { continue } val := strings.TrimSpace(value) if val == "" { continue } out[name] = val } case map[string]any: for key, value := range headers { name := strings.TrimSpace(key) if name == "" { continue } rawVal, ok := value.(string) if !ok { continue } val := strings.TrimSpace(rawVal) if val == "" { continue } out[name] = val } default: return nil } if len(out) == 0 { return nil } return out } func ApplyCustomHeadersFromMetadata(auth *Auth) { if auth == nil || len(auth.Metadata) == 0 { return } headers := ExtractCustomHeadersFromMetadata(auth.Metadata) if len(headers) == 0 { return } if auth.Attributes == nil { auth.Attributes = make(map[string]string) } for name, value := range headers { auth.Attributes["header:"+name] = value } }