diff --git a/internal/api/registries.go b/internal/api/registries.go index ee7fbc4..30f8870 100644 --- a/internal/api/registries.go +++ b/internal/api/registries.go @@ -2,7 +2,9 @@ package api import ( "errors" + "log/slog" "net/http" + "strings" "github.com/go-chi/chi/v5" @@ -309,11 +311,24 @@ func (s *Server) listRegistryImages(w http.ResponseWriter, r *http.Request) { return } - images, err := client.ListImages(r.Context(), reg.Owner) - if err != nil { - respondError(w, http.StatusBadGateway, "failed to list images: "+err.Error()) - return + // Support comma-separated owners (e.g., "alexei,team-org,other-user"). + owners := strings.Split(reg.Owner, ",") + var allImages []registry.RegistryImage + for _, owner := range owners { + owner = strings.TrimSpace(owner) + if owner == "" { + continue + } + images, err := client.ListImages(r.Context(), owner) + if err != nil { + slog.Warn("failed to list images for owner", "owner", owner, "error", err) + continue + } + allImages = append(allImages, images...) + } + if allImages == nil { + allImages = []registry.RegistryImage{} } - respondJSON(w, http.StatusOK, images) + respondJSON(w, http.StatusOK, allImages) } diff --git a/web/src/lib/i18n/en.json b/web/src/lib/i18n/en.json index 91c1396..0a8478a 100644 --- a/web/src/lib/i18n/en.json +++ b/web/src/lib/i18n/en.json @@ -225,7 +225,7 @@ "tokenHelpNew": "API token for authentication", "tokenHelpEdit": "Leave empty to keep the existing token", "owner": "Owner", - "ownerHelp": "Package owner (e.g., username or organization) for image listing", + "ownerHelp": "Package owners, comma-separated (e.g., alexei,my-org)", "save": "Save", "saving": "Saving...", "update": "Update", diff --git a/web/src/lib/i18n/ru.json b/web/src/lib/i18n/ru.json index 3f7f78c..a4e56b2 100644 --- a/web/src/lib/i18n/ru.json +++ b/web/src/lib/i18n/ru.json @@ -225,7 +225,7 @@ "tokenHelpNew": "API-токен для аутентификации", "tokenHelpEdit": "Оставьте пустым, чтобы сохранить текущий токен", "owner": "Владелец", - "ownerHelp": "Владелец пакетов (имя пользователя или организации) для списка образов", + "ownerHelp": "Владельцы пакетов через запятую (напр., alexei,my-org)", "save": "Сохранить", "saving": "Сохранение...", "update": "Обновить",