feat: JWT auth in operator + hello-node example updated

- operator: auth middleware теперь валидирует JWT (sub+exp), не статический токен
- operator: ensureNamespace идемпотентен при race condition (IsAlreadyExists)
- operator: NewRouter убран параметр apiToken — больше не нужен
- examples/hello-node: prod.token + nubes_endpoint + версия провайдера 0.1.12
- протестировано: namespace sless-cdd874dfa31ba6ca создан автоматически
This commit is contained in:
“Naeel”
2026-03-11 07:51:06 +04:00
parent f41cd39b26
commit 5ae2ee7f85
4 changed files with 75 additions and 17 deletions
+3 -3
View File
@@ -16,9 +16,9 @@ import (
)
// NewRouter собирает gorilla/mux роутер со всеми маршрутами.
// apiToken — статический Bearer-токен для v1 аутентификации.
// /fn/{namespace}/{name} — публичный прокси для вызова функций, без auth.
func NewRouter(h *handler.Handler, apiToken string, log *slog.Logger) http.Handler {
// /v1/ — защищён JWT-аутентификацией (middleware.Auth).
func NewRouter(h *handler.Handler, log *slog.Logger) http.Handler {
r := mux.NewRouter()
// Публичный прокси для вызова HTTP-триггеров — без auth токена
@@ -57,7 +57,7 @@ func NewRouter(h *handler.Handler, apiToken string, log *slog.Logger) http.Handl
// /fn/ — без auth, /v1/ — с auth.
// Используем gorilla/mux Use() чтобы auth применялся только к v1 суброутеру.
v1.Use(func(next http.Handler) http.Handler {
return middleware.Auth(apiToken, log, next)
return middleware.Auth(log, next)
})
return middleware.Logging(log, r)