feat: implement async modpack import with websockets

This commit is contained in:
2026-01-05 18:06:54 +03:00
parent 0751ddb88a
commit 9bf2a15045
8 changed files with 435 additions and 64 deletions

View File

@@ -16,15 +16,25 @@ const ClaimsContextKey = contextKey("claims")
// AuthMiddleware проверяет JWT токен и добавляет claims в контекст запроса.
func AuthMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
var tokenString string
// 1. Проверяем заголовок Authorization
authHeader := r.Header.Get("Authorization")
if authHeader == "" {
http.Error(w, "Authorization header required", http.StatusUnauthorized)
return
if authHeader != "" {
tokenString = strings.TrimPrefix(authHeader, "Bearer ")
if tokenString == authHeader { // Не было префикса Bearer
http.Error(w, "Invalid token format", http.StatusUnauthorized)
return
}
}
tokenString := strings.TrimPrefix(authHeader, "Bearer ")
if tokenString == authHeader {
http.Error(w, "Invalid token format", http.StatusUnauthorized)
// 2. Если заголовка нет, проверяем параметр query (для WebSocket)
if tokenString == "" {
tokenString = r.URL.Query().Get("token")
}
if tokenString == "" {
http.Error(w, "Authorization required", http.StatusUnauthorized)
return
}