forked from templates/template-go-orm
Go-сервис-прокси между Codex CLI и Ollama. Добавляет Bearer-авторизацию, LLM-маршрутизатор (deepseek классифицирует запросы: code/doc/general), поддержку OpenAI Responses API для Codex CLI, стриминг SSE, кеш модели. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
828 B
Go
29 lines
828 B
Go
package handler
|
||
|
||
import (
|
||
"net/http"
|
||
"strings"
|
||
)
|
||
|
||
// TokenAuth — middleware для проверки Bearer-токена.
|
||
// Сравнивает токен из заголовка Authorization с AUTH_TOKEN из конфига.
|
||
func TokenAuth(token string) func(http.Handler) http.Handler {
|
||
return func(next http.Handler) http.Handler {
|
||
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||
header := r.Header.Get("Authorization")
|
||
if header == "" {
|
||
http.Error(w, `{"error":"missing authorization header"}`, http.StatusUnauthorized)
|
||
return
|
||
}
|
||
|
||
bearerToken := strings.TrimPrefix(header, "Bearer ")
|
||
if bearerToken == header || bearerToken != token {
|
||
http.Error(w, `{"error":"invalid or missing token"}`, http.StatusUnauthorized)
|
||
return
|
||
}
|
||
|
||
next.ServeHTTP(w, r)
|
||
})
|
||
}
|
||
}
|