]> source.dussan.org Git - gitea.git/commitdiff
Hide internal package versions (#20492)
authorKN4CK3R <admin@oldschoolhack.me>
Wed, 27 Jul 2022 01:59:10 +0000 (03:59 +0200)
committerGitHub <noreply@github.com>
Wed, 27 Jul 2022 01:59:10 +0000 (09:59 +0800)
* Hide internal versions from most searches.

* Added test.

12 files changed:
integrations/api_packages_container_test.go
models/packages/package_version.go
routers/api/packages/composer/composer.go
routers/api/packages/helm/helm.go
routers/api/packages/npm/npm.go
routers/api/packages/nuget/nuget.go
routers/api/packages/rubygems/rubygems.go
routers/api/v1/packages/package.go
routers/web/admin/packages.go
routers/web/repo/packages.go
routers/web/user/package.go
services/packages/packages.go

index 1ed80dfd02277bdad85e13000c324c9c8ce9261a..bdb8e2e90e3931eebc019cb0cdc27ebef3120d97 100644 (file)
@@ -20,6 +20,7 @@ import (
        container_module "code.gitea.io/gitea/modules/packages/container"
        "code.gitea.io/gitea/modules/packages/container/oci"
        "code.gitea.io/gitea/modules/setting"
+       api "code.gitea.io/gitea/modules/structs"
 
        "github.com/stretchr/testify/assert"
 )
@@ -487,6 +488,13 @@ func TestPackageContainer(t *testing.T) {
                                        assert.Equal(t, c.ExpectedTags, tagList.Tags)
                                        assert.Equal(t, c.ExpectedLink, resp.Header().Get("Link"))
                                }
+
+                               req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/packages/%s?type=container&q=%s", user.Name, image))
+                               resp := MakeRequest(t, req, http.StatusOK)
+
+                               var apiPackages []*api.Package
+                               DecodeJSON(t, resp, &apiPackages)
+                               assert.Len(t, apiPackages, 4) // "latest", "main", "multi", "sha256:..."
                        })
 
                        t.Run("Delete", func(t *testing.T) {
index 83c2fdb67489f74109b258d3a417374c2ca08309..5479bae1c29fc5a6505490576c6f4b9ccf911f79 100644 (file)
@@ -122,8 +122,9 @@ func getVersionByNameAndVersion(ctx context.Context, ownerID int64, packageType
 // GetVersionsByPackageType gets all versions of a specific type
 func GetVersionsByPackageType(ctx context.Context, ownerID int64, packageType Type) ([]*PackageVersion, error) {
        pvs, _, err := SearchVersions(ctx, &PackageSearchOptions{
-               OwnerID: ownerID,
-               Type:    packageType,
+               OwnerID:    ownerID,
+               Type:       packageType,
+               IsInternal: util.OptionalBoolFalse,
        })
        return pvs, err
 }
@@ -137,6 +138,7 @@ func GetVersionsByPackageName(ctx context.Context, ownerID int64, packageType Ty
                        ExactMatch: true,
                        Value:      name,
                },
+               IsInternal: util.OptionalBoolFalse,
        })
        return pvs, err
 }
index 23de28c7f9ed208141b820c1188ff4f10100b49c..b7c1f140dcf4934a5e850870488e9ac99dfddfaf 100644 (file)
@@ -19,6 +19,7 @@ import (
        packages_module "code.gitea.io/gitea/modules/packages"
        composer_module "code.gitea.io/gitea/modules/packages/composer"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers/api/packages/helper"
        packages_service "code.gitea.io/gitea/services/packages"
 
@@ -62,10 +63,11 @@ func SearchPackages(ctx *context.Context) {
        }
 
        opts := &packages_model.PackageSearchOptions{
-               OwnerID:   ctx.Package.Owner.ID,
-               Type:      packages_model.TypeComposer,
-               Name:      packages_model.SearchValue{Value: ctx.FormTrim("q")},
-               Paginator: &paginator,
+               OwnerID:    ctx.Package.Owner.ID,
+               Type:       packages_model.TypeComposer,
+               Name:       packages_model.SearchValue{Value: ctx.FormTrim("q")},
+               IsInternal: util.OptionalBoolFalse,
+               Paginator:  &paginator,
        }
        if ctx.FormTrim("type") != "" {
                opts.Properties = map[string]string{
index ae0643a35a90fe0127ad47c2c95317d73c3e0f55..f59cfc7c7b38f7b2cb1733a365f85a5608befc38 100644 (file)
@@ -19,6 +19,7 @@ import (
        packages_module "code.gitea.io/gitea/modules/packages"
        helm_module "code.gitea.io/gitea/modules/packages/helm"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers/api/packages/helper"
        packages_service "code.gitea.io/gitea/services/packages"
 
@@ -39,8 +40,9 @@ func apiError(ctx *context.Context, status int, obj interface{}) {
 // Index generates the Helm charts index
 func Index(ctx *context.Context) {
        pvs, _, err := packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{
-               OwnerID: ctx.Package.Owner.ID,
-               Type:    packages_model.TypeHelm,
+               OwnerID:    ctx.Package.Owner.ID,
+               Type:       packages_model.TypeHelm,
+               IsInternal: util.OptionalBoolFalse,
        })
        if err != nil {
                apiError(ctx, http.StatusInternalServerError, err)
@@ -108,6 +110,7 @@ func DownloadPackageFile(ctx *context.Context) {
                        Value:      ctx.Params("package"),
                },
                HasFileWithName: filename,
+               IsInternal:      util.OptionalBoolFalse,
        })
        if err != nil {
                apiError(ctx, http.StatusInternalServerError, err)
index d127134d44558ab2658b46b427b7840fcdd99038..152edc681a0486831538f2437631e78cc3e0ba34 100644 (file)
@@ -18,6 +18,7 @@ import (
        packages_module "code.gitea.io/gitea/modules/packages"
        npm_module "code.gitea.io/gitea/modules/packages/npm"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers/api/packages/helper"
        packages_service "code.gitea.io/gitea/services/packages"
 
@@ -261,6 +262,7 @@ func setPackageTag(tag string, pv *packages_model.PackageVersion, deleteOnly boo
                Properties: map[string]string{
                        npm_module.TagProperty: tag,
                },
+               IsInternal: util.OptionalBoolFalse,
        })
        if err != nil {
                return err
index 013c0c1e3354357f843ee527917952963ed0d344..b7667a32225a2f7577cd6faf5736462c4326c318 100644 (file)
@@ -17,6 +17,7 @@ import (
        packages_module "code.gitea.io/gitea/modules/packages"
        nuget_module "code.gitea.io/gitea/modules/packages/nuget"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers/api/packages/helper"
        packages_service "code.gitea.io/gitea/services/packages"
 )
@@ -39,9 +40,10 @@ func ServiceIndex(ctx *context.Context) {
 // SearchService https://docs.microsoft.com/en-us/nuget/api/search-query-service-resource#search-for-packages
 func SearchService(ctx *context.Context) {
        pvs, count, err := packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{
-               OwnerID: ctx.Package.Owner.ID,
-               Type:    packages_model.TypeNuGet,
-               Name:    packages_model.SearchValue{Value: ctx.FormTrim("q")},
+               OwnerID:    ctx.Package.Owner.ID,
+               Type:       packages_model.TypeNuGet,
+               Name:       packages_model.SearchValue{Value: ctx.FormTrim("q")},
+               IsInternal: util.OptionalBoolFalse,
                Paginator: db.NewAbsoluteListOptions(
                        ctx.FormInt("skip"),
                        ctx.FormInt("take"),
index b3815a914ea7e660678022d8a67c9f71533059db..4f066a83033e27fb4e602be10752ca7ae15e02ae 100644 (file)
@@ -16,6 +16,7 @@ import (
        "code.gitea.io/gitea/modules/context"
        packages_module "code.gitea.io/gitea/modules/packages"
        rubygems_module "code.gitea.io/gitea/modules/packages/rubygems"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers/api/packages/helper"
        packages_service "code.gitea.io/gitea/services/packages"
 )
@@ -40,8 +41,9 @@ func EnumeratePackages(ctx *context.Context) {
 // EnumeratePackagesLatest serves the list of the latest version of every package
 func EnumeratePackagesLatest(ctx *context.Context) {
        pvs, _, err := packages_model.SearchLatestVersions(ctx, &packages_model.PackageSearchOptions{
-               OwnerID: ctx.Package.Owner.ID,
-               Type:    packages_model.TypeRubyGems,
+               OwnerID:    ctx.Package.Owner.ID,
+               Type:       packages_model.TypeRubyGems,
+               IsInternal: util.OptionalBoolFalse,
        })
        if err != nil {
                apiError(ctx, http.StatusInternalServerError, err)
@@ -289,6 +291,7 @@ func getVersionsByFilename(ctx *context.Context, filename string) ([]*packages_m
                OwnerID:         ctx.Package.Owner.ID,
                Type:            packages_model.TypeRubyGems,
                HasFileWithName: filename,
+               IsInternal:      util.OptionalBoolFalse,
        })
        return pvs, err
 }
index 038924737ac7c6205a53633054781e29ddc168ca..5a9c93b3ca064e45ed8e455d9acec40c152c044d 100644 (file)
@@ -11,6 +11,7 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/convert"
        api "code.gitea.io/gitea/modules/structs"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers/api/v1/utils"
        packages_service "code.gitea.io/gitea/services/packages"
 )
@@ -55,10 +56,11 @@ func ListPackages(ctx *context.APIContext) {
        query := ctx.FormTrim("q")
 
        pvs, count, err := packages.SearchVersions(ctx, &packages.PackageSearchOptions{
-               OwnerID:   ctx.Package.Owner.ID,
-               Type:      packages.Type(packageType),
-               Name:      packages.SearchValue{Value: query},
-               Paginator: &listOptions,
+               OwnerID:    ctx.Package.Owner.ID,
+               Type:       packages.Type(packageType),
+               Name:       packages.SearchValue{Value: query},
+               IsInternal: util.OptionalBoolFalse,
+               Paginator:  &listOptions,
        })
        if err != nil {
                ctx.Error(http.StatusInternalServerError, "SearchVersions", err)
index 79bf025dd28c3edb1bf321dc7277b2d5b56c5270..5de8922e6f34ffd0cadcb8e910af1e85a5288dcd 100644 (file)
@@ -13,6 +13,7 @@ import (
        "code.gitea.io/gitea/modules/base"
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
        packages_service "code.gitea.io/gitea/services/packages"
 )
 
@@ -31,9 +32,10 @@ func Packages(ctx *context.Context) {
        sort := ctx.FormTrim("sort")
 
        pvs, total, err := packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{
-               Type: packages_model.Type(packageType),
-               Name: packages_model.SearchValue{Value: query},
-               Sort: sort,
+               Type:       packages_model.Type(packageType),
+               Name:       packages_model.SearchValue{Value: query},
+               Sort:       sort,
+               IsInternal: util.OptionalBoolFalse,
                Paginator: &db.ListOptions{
                        PageSize: setting.UI.PackagesPagingNum,
                        Page:     page,
index 03ea4fc5f4f46aee3354505103dec40ae1fa8735..d2d31ad57c6a7549df917dbe13b8a08fd2b3c63e 100644 (file)
@@ -12,6 +12,7 @@ import (
        "code.gitea.io/gitea/modules/base"
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
 )
 
 const (
@@ -32,10 +33,11 @@ func Packages(ctx *context.Context) {
                        PageSize: setting.UI.PackagesPagingNum,
                        Page:     page,
                },
-               OwnerID: ctx.ContextUser.ID,
-               RepoID:  ctx.Repo.Repository.ID,
-               Type:    packages.Type(packageType),
-               Name:    packages.SearchValue{Value: query},
+               OwnerID:    ctx.ContextUser.ID,
+               RepoID:     ctx.Repo.Repository.ID,
+               Type:       packages.Type(packageType),
+               Name:       packages.SearchValue{Value: query},
+               IsInternal: util.OptionalBoolFalse,
        })
        if err != nil {
                ctx.ServerError("SearchLatestVersions", err)
index b2b550cb73b4d791aa54b0b5e0f1749531767aee..aa379152b30b17008503c5e3232ea75e9aadb7b5 100644 (file)
@@ -17,6 +17,7 @@ import (
        "code.gitea.io/gitea/modules/context"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
+       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/modules/web"
        "code.gitea.io/gitea/services/forms"
        packages_service "code.gitea.io/gitea/services/packages"
@@ -43,9 +44,10 @@ func ListPackages(ctx *context.Context) {
                        PageSize: setting.UI.PackagesPagingNum,
                        Page:     page,
                },
-               OwnerID: ctx.ContextUser.ID,
-               Type:    packages_model.Type(packageType),
-               Name:    packages_model.SearchValue{Value: query},
+               OwnerID:    ctx.ContextUser.ID,
+               Type:       packages_model.Type(packageType),
+               Name:       packages_model.SearchValue{Value: query},
+               IsInternal: util.OptionalBoolFalse,
        })
        if err != nil {
                ctx.ServerError("SearchLatestVersions", err)
@@ -112,7 +114,8 @@ func RedirectToLastVersion(ctx *context.Context) {
        }
 
        pvs, _, err := packages_model.SearchLatestVersions(ctx, &packages_model.PackageSearchOptions{
-               PackageID: p.ID,
+               PackageID:  p.ID,
+               IsInternal: util.OptionalBoolFalse,
        })
        if err != nil {
                ctx.ServerError("GetPackageByName", err)
@@ -157,8 +160,9 @@ func ViewPackageVersion(ctx *context.Context) {
                })
        default:
                pvs, total, err = packages_model.SearchVersions(ctx, &packages_model.PackageSearchOptions{
-                       Paginator: db.NewAbsoluteListOptions(0, 5),
-                       PackageID: pd.Package.ID,
+                       Paginator:  db.NewAbsoluteListOptions(0, 5),
+                       PackageID:  pd.Package.ID,
+                       IsInternal: util.OptionalBoolFalse,
                })
                if err != nil {
                        ctx.ServerError("SearchVersions", err)
@@ -254,6 +258,7 @@ func ListPackageVersions(ctx *context.Context) {
                                ExactMatch: false,
                                Value:      query,
                        },
+                       IsInternal: util.OptionalBoolFalse,
                })
                if err != nil {
                        ctx.ServerError("SearchVersions", err)
index 0ebf6e7df0cd8b30fdfe61e40be93c50a160dd43..aa1796e8b3f78c7dcb85bd167a8e9b96dab59cad 100644 (file)
@@ -19,6 +19,7 @@ import (
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/notification"
        packages_module "code.gitea.io/gitea/modules/packages"
+       "code.gitea.io/gitea/modules/util"
        container_service "code.gitea.io/gitea/services/packages/container"
 )
 
@@ -462,7 +463,8 @@ func RemoveAllPackages(ctx context.Context, userID int64) (int, error) {
                                PageSize: repo_model.RepositoryListDefaultPageSize,
                                Page:     1,
                        },
-                       OwnerID: userID,
+                       OwnerID:    userID,
+                       IsInternal: util.OptionalBoolNone,
                })
                if err != nil {
                        return count, fmt.Errorf("GetOwnedPackages[%d]: %w", userID, err)