Skip to content

Commit b7ac172

Browse files
authored
Hide package metadata for certain packages (#9096)
Verified in DEV.
1 parent 4ccb143 commit b7ac172

12 files changed

Lines changed: 252 additions & 122 deletions

File tree

src/NuGetGallery/Controllers/PackagesController.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,6 +1365,9 @@ public virtual ActionResult ReportAbuse(string id, string version)
13651365
PackageId = id,
13661366
PackageVersion = package.Version,
13671367
CopySender = true,
1368+
IsPackageListed = package.Listed,
1369+
IsOwnerLocked = package.User?.IsLocked ?? false,
1370+
IsPackageLocked = package.PackageRegistration.IsLocked,
13681371
};
13691372

13701373
if (Request.IsAuthenticated)
@@ -1418,6 +1421,9 @@ public virtual async Task<ActionResult> ReportMyPackage(string id, string versio
14181421
PackageVersion = package.Version,
14191422
CopySender = true,
14201423
AllowDelete = allowDelete,
1424+
IsPackageListed = package.Listed,
1425+
IsPackageLocked = package.PackageRegistration.IsLocked,
1426+
IsOwnerLocked = package.User?.IsLocked ?? false
14211427
};
14221428

14231429
return View(model);

src/NuGetGallery/Helpers/ViewModelExtensions/ListPackageItemViewModelFactory.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,12 @@ private static bool CanPerformAction(User currentUser, Package package, ActionRe
6868

6969
private static BasicUserViewModel GetBasicUserViewModel(User user)
7070
{
71-
return new BasicUserViewModel { Username = user.Username, EmailAddress = user.EmailAddress, IsOrganization = user is Organization };
71+
return new BasicUserViewModel {
72+
Username = user.Username,
73+
EmailAddress = user.EmailAddress,
74+
IsOrganization = user is Organization,
75+
IsLocked = user.IsLocked
76+
};
7277
}
7378
}
7479
}

src/NuGetGallery/Helpers/ViewModelExtensions/PackageViewModelFactory.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public PackageViewModel Setup(PackageViewModel viewModel, Package package)
4747
viewModel.DevelopmentDependency = package.DevelopmentDependency;
4848
viewModel.LastUpdated = package.Published;
4949
viewModel.Listed = package.Listed;
50+
viewModel.Locked = package.PackageRegistration.IsLocked;
5051
viewModel.DownloadCount = package.DownloadCount;
5152
viewModel.Prerelease = package.IsPrerelease;
5253
viewModel.FailedValidation = package.PackageStatusKey == PackageStatus.FailedValidation;

src/NuGetGallery/ViewModels/BasicUserViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ public class BasicUserViewModel
88
public string EmailAddress { get; set; }
99
public string Username { get; set; }
1010
public bool IsOrganization { get; set; }
11+
public bool IsLocked { get; set; }
1112
}
1213
}

src/NuGetGallery/ViewModels/DisplayPackageViewModel.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,14 @@ public bool BlockSearchEngineIndexing
156156
}
157157
}
158158

159+
public bool ShowDetailsAndLinks
160+
{
161+
get
162+
{
163+
return Listed || !Locked || !Owners.Any(x => x.IsLocked);
164+
}
165+
}
166+
159167
public enum RepositoryKind
160168
{
161169
Unknown,

src/NuGetGallery/ViewModels/PackageViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public class PackageViewModel : IPackageVersionModel
1919
public bool VersionRequestedWasNotFound { get; set; }
2020
public int DownloadCount { get; set; }
2121
public bool Listed { get; set; }
22+
public bool Locked { get; set; }
2223
public bool FailedValidation { get; set; }
2324
public bool Available { get; set; }
2425
public bool Validating { get; set; }

src/NuGetGallery/ViewModels/ReportAbuseViewModel.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,13 @@ public class ReportAbuseViewModel : ReportViewModel
2727
[StringLength(4000)]
2828
[Display(Name = "Details")]
2929
public string Message { get; set; }
30+
31+
public bool ShowReportAbuseForm
32+
{
33+
get
34+
{
35+
return IsPackageListed || !IsPackageLocked || !IsOwnerLocked;
36+
}
37+
}
3038
}
3139
}

src/NuGetGallery/ViewModels/ReportViewModel.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,9 @@ public abstract class ReportViewModel : IPackageVersionModel
2626

2727
public string Id => PackageId;
2828
public string Version => PackageVersion;
29+
30+
public bool IsOwnerLocked { get; set; }
31+
public bool IsPackageLocked { get; set; }
32+
public bool IsPackageListed { get; set; }
2933
}
3034
}

src/NuGetGallery/Views/Packages/DisplayPackage.cshtml

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@
238238
<h1>
239239
<span class="pull-left">
240240
<img class="package-icon img-responsive" aria-hidden="true" alt=""
241-
src="@(PackageHelper.ShouldRenderUrl(Model.IconUrl) ? Model.IconUrl : Url.Absolute("~/Content/gallery/img/default-package-icon.svg"))"
241+
src="@(PackageHelper.ShouldRenderUrl(Model.IconUrl) && Model.ShowDetailsAndLinks ? Model.IconUrl : Url.Absolute("~/Content/gallery/img/default-package-icon.svg"))"
242242
@ViewHelpers.ImageFallback(Url.Absolute("~/Content/gallery/img/default-package-icon-256x256.png")) />
243243
</span>
244244
<span class="title" tabindex="0">
@@ -618,13 +618,19 @@
618618
@if (!Model.Deleted)
619619
{
620620
<div role="tabpanel" class="tab-pane @(activeBodyTab == "readme" ? "active" : "")" id="readme-tab" aria-label="Readme tab content">
621-
@if ((Model.Validating || Model.FailedValidation) && Model.HasEmbeddedReadmeFile)
621+
@if (!Model.ShowDetailsAndLinks)
622622
{
623623
@ViewHelpers.AlertWarning(
624-
@<text>
625-
The readme will become available once package validation has completed successfully.
626-
</text>
627-
)
624+
@<text>
625+
This package's content is hidden as it violates our <a href="https://www.nuget.org/policies/terms" title="Terms of use">Terms of use</a>.
626+
</text>)
627+
}
628+
else if ((Model.Validating || Model.FailedValidation) && Model.HasEmbeddedReadmeFile)
629+
{
630+
@ViewHelpers.AlertWarning(
631+
@<text>
632+
The readme will become available once package validation has completed successfully.
633+
</text>)
628634
}
629635
else if (Model.ReadMeHtml != null)
630636
{
@@ -997,7 +1003,7 @@
9971003
<i class="ms-Icon ms-Icon--History" aria-hidden="true"></i>
9981004
Last updated <span data-datetime="@Model.LastUpdated.ToString("O")">@Model.LastUpdated.ToNuGetShortDateString()</span>
9991005
</li>
1000-
@if (!Model.Deleted && Model.ProjectUrl != null)
1006+
@if (!Model.Deleted && Model.ProjectUrl != null && Model.ShowDetailsAndLinks)
10011007
{
10021008
<li>
10031009
<i class="ms-Icon ms-Icon--Globe" aria-hidden="true"></i>
@@ -1007,7 +1013,7 @@
10071013
</li>
10081014
}
10091015

1010-
@if (!Model.Deleted && Model.RepositoryUrl != null)
1016+
@if (!Model.Deleted && Model.RepositoryUrl != null && Model.ShowDetailsAndLinks)
10111017
{
10121018
<li>
10131019
@switch (Model.RepositoryType)
@@ -1029,7 +1035,7 @@
10291035
</li>
10301036
}
10311037

1032-
@if (!Model.Deleted && Model.LicenseUrl != null)
1038+
@if (!Model.Deleted && Model.LicenseUrl != null && Model.ShowDetailsAndLinks)
10331039
{
10341040
if (Model.EmbeddedLicenseType == EmbeddedLicenseFileType.Absent || !Model.Validating)
10351041
{

0 commit comments

Comments
 (0)