diff --git a/services/context/repo.go b/services/context/repo.go index 67e0c70811..977d5e37bb 100644 --- a/services/context/repo.go +++ b/services/context/repo.go @@ -448,12 +448,17 @@ func repoAssignmentLegacy(ctx *Context, data *repoAssignmentPrepareDataStruct) { hasKey := ctx.FormString("dlid") != "" || ctx.FormString("key") != "" || ctx.FormString("download_key") != "" // Check if downloads are set to public (download_gating=none means no key needed). + // Only apply to release/download paths, not the main repo page. downloadsPublic := false - if orgCfg != nil && (orgCfg.DownloadGating == "" || orgCfg.DownloadGating == "none") { - downloadsPublic = true - } - if repoCfg != nil && (repoCfg.DownloadGating == "" || repoCfg.DownloadGating == "none") { - downloadsPublic = true + reqPath := ctx.Req.URL.Path + isDownloadPath := strings.Contains(reqPath, "/releases/") || strings.Contains(reqPath, "/archive/") + if isDownloadPath { + if orgCfg != nil && (orgCfg.DownloadGating == "" || orgCfg.DownloadGating == "none") { + downloadsPublic = true + } + if repoCfg != nil && (repoCfg.DownloadGating == "" || repoCfg.DownloadGating == "none") { + downloadsPublic = true + } } if ctx.IsSigned || hasKey || downloadsPublic {