Skip to content

Commit 56d38d4

Browse files
authored
Merge pull request #8866 from NuGet/dev
[ReleasePrep][2021.11.02]RI of dev into main
2 parents cc653c1 + 2cf96a4 commit 56d38d4

34 files changed

Lines changed: 702 additions & 376 deletions

NuGet.config

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,62 @@
1212
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
1313
<add key="nuget-build" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/nuget-build/nuget/v3/index.json" />
1414
</packageSources>
15+
<packageSourceMapping>
16+
<clear />
17+
<packageSource key="nuget">
18+
<package pattern="Antlr" />
19+
<package pattern="Autofac" />
20+
<package pattern="Autofac.*" />
21+
<package pattern="Castle.Core" />
22+
<package pattern="CommonMark.NET" />
23+
<package pattern="CsvHelper" />
24+
<package pattern="d3" />
25+
<package pattern="Dapper.StrongName" />
26+
<package pattern="EntityFramework" />
27+
<package pattern="FluentLinkChecker" />
28+
<package pattern="Hyak.Common" />
29+
<package pattern="Knapcode.MiniZip" />
30+
<package pattern="Lucene.Net" />
31+
<package pattern="Lucene.Net.Contrib" />
32+
<package pattern="Markdig.Signed" />
33+
<package pattern="MicroBuild.Core" />
34+
<package pattern="Microsoft.*" />
35+
<package pattern="Modernizr" />
36+
<package pattern="Moment.js" />
37+
<package pattern="Moq" />
38+
<package pattern="MvcTreeView" />
39+
<package pattern="NETStandard.Library" />
40+
<package pattern="Newtonsoft.Json" />
41+
<package pattern="NuGet.*" />
42+
<package pattern="Owin" />
43+
<package pattern="Polly" />
44+
<package pattern="Polly.Extensions.Http" />
45+
<package pattern="RazorEngine" />
46+
<package pattern="RouteMagic" />
47+
<package pattern="Runtime.*" />
48+
<package pattern="Serilog" />
49+
<package pattern="Serilog.*" />
50+
<package pattern="SerilogTraceListener" />
51+
<package pattern="SharpZipLib" />
52+
<package pattern="System.*" />
53+
<package pattern="WebActivatorEx" />
54+
<package pattern="WebGrease" />
55+
<package pattern="WindowsAzure.*" />
56+
<package pattern="xunit" />
57+
<package pattern="xunit.*" />
58+
</packageSource>
59+
<packageSource key="nuget-build">
60+
<package pattern="Microsoft.AspNet.WebApi.MessageHandlers.Compression.Strongname" />
61+
<package pattern="NuGet.Jobs.*" />
62+
<package pattern="NuGet.Services.*" />
63+
<package pattern="NuGet.StrongName.*" />
64+
<package pattern="Strathweb.CacheOutput.WebApi2.StrongName" />
65+
</packageSource>
66+
</packageSourceMapping>
1567
<activePackageSource>
1668
<add key="All" value="(Aggregate source)" />
1769
</activePackageSource>
70+
<disabledPackageSources>
71+
<clear />
72+
</disabledPackageSources>
1873
</configuration>

build.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ param (
1010
[string]$PackageSuffix,
1111
[string]$Branch,
1212
[string]$CommitSHA,
13-
[string]$BuildBranchCommit = 'ade39b693d49b266ec5cac5d939edac7dda2fd92',
13+
[string]$BuildBranchCommit = '92d2a66ef95a1772e748872d77f34a6e951ffdc8',
1414
[string]$VerifyMicrosoftPackageVersion = $null
1515
)
1616

src/AccountDeleter/Configuration/GalleryConfiguration.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public string SiteRoot
3737
public string AzureStorage_Revalidation_ConnectionString { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
3838
public bool AzureStorageReadAccessGeoRedundant { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
3939
public TimeSpan FeatureFlagsRefreshInterval { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
40+
public bool AdminPanelEnabled { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
4041
public bool AdminPanelDatabaseAccessEnabled { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
4142
public bool AsynchronousPackageValidationEnabled { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }
4243
public bool BlockingAsynchronousPackageValidationEnabled { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }

src/NuGetGallery.Services/Configuration/AppConfiguration.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ public class AppConfiguration : IAppConfiguration
7676

7777
public TimeSpan FeatureFlagsRefreshInterval { get; set; }
7878

79+
[DefaultValue(true)]
80+
public bool AdminPanelEnabled { get; set; }
81+
7982
public bool AdminPanelDatabaseAccessEnabled { get; set; }
8083

8184
public bool AsynchronousPackageValidationEnabled { get; set; }

src/NuGetGallery.Services/Configuration/IAppConfiguration.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,11 @@ public interface IAppConfiguration : IMessageServiceConfiguration
100100
/// </summary>
101101
TimeSpan FeatureFlagsRefreshInterval { get; set; }
102102

103+
/// <summary>
104+
/// Indicates whether Admin panel pages exist on this instance.
105+
/// </summary>
106+
bool AdminPanelEnabled { get; set; }
107+
103108
/// <summary>
104109
/// Gets a boolean indicating whether DB admin through web UI should be accesible.
105110
/// </summary>

src/NuGetGallery.Services/Permissions/ActionRequiringEntityPermissions.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,25 @@ public PermissionsCheckResult CheckPermissionsOnBehalfOfAnyAccount(User currentU
6363
return CheckPermissionsOnBehalfOfAnyAccount(currentUser, entity, exitEarly: false, accountsAllowedOnBehalfOf: out accountsAllowedOnBehalfOf);
6464
}
6565

66+
public override bool Equals(object obj)
67+
{
68+
if (obj == null)
69+
{
70+
return false;
71+
}
72+
var other = obj as ActionRequiringEntityPermissions<TEntity>;
73+
if (other == null)
74+
{
75+
return false;
76+
}
77+
return AccountOnBehalfOfPermissionsRequirement == other.AccountOnBehalfOfPermissionsRequirement;
78+
}
79+
80+
public override int GetHashCode()
81+
{
82+
return AccountOnBehalfOfPermissionsRequirement.GetHashCode();
83+
}
84+
6685
private PermissionsCheckResult CheckPermissionsOnBehalfOfAnyAccount(User currentUser, TEntity entity, bool exitEarly, out IEnumerable<User> accountsAllowedOnBehalfOf)
6786
{
6887
accountsAllowedOnBehalfOf = new List<User>();

src/NuGetGallery.Services/Permissions/ActionRequiringPackagePermissions.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,25 @@ public PermissionsCheckResult CheckPermissionsOnBehalfOfAnyAccount(User currentU
4949
return CheckPermissionsOnBehalfOfAnyAccount(currentUser, GetPackageRegistration(package), out accountsAllowedOnBehalfOf);
5050
}
5151

52+
public override bool Equals(object obj)
53+
{
54+
if (!base.Equals(obj))
55+
{
56+
return false;
57+
}
58+
var other = obj as ActionRequiringPackagePermissions;
59+
if (other == null)
60+
{
61+
return false;
62+
}
63+
return PackageRegistrationPermissionsRequirement == other.PackageRegistrationPermissionsRequirement;
64+
}
65+
66+
public override int GetHashCode()
67+
{
68+
return base.GetHashCode() ^ PackageRegistrationPermissionsRequirement.GetHashCode();
69+
}
70+
5271
protected override IEnumerable<User> GetOwners(PackageRegistration packageRegistration)
5372
{
5473
return packageRegistration != null ? packageRegistration.Owners : Enumerable.Empty<User>();

src/NuGetGallery.Services/Permissions/ActionRequiringReservedNamespacePermissions.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,25 @@ public PermissionsCheckResult CheckPermissions(IPrincipal currentPrincipal, User
5050
return CheckPermissions(currentPrincipal, account, GetReservedNamespaces(reservedNamespace));
5151
}
5252

53+
public override bool Equals(object obj)
54+
{
55+
if (!base.Equals(obj))
56+
{
57+
return false;
58+
}
59+
var other = obj as ActionRequiringReservedNamespacePermissions;
60+
if (other == null)
61+
{
62+
return false;
63+
}
64+
return ReservedNamespacePermissionsRequirement == other.ReservedNamespacePermissionsRequirement;
65+
}
66+
67+
public override int GetHashCode()
68+
{
69+
return base.GetHashCode() ^ ReservedNamespacePermissionsRequirement.GetHashCode();
70+
}
71+
5372
protected override PermissionsCheckResult CheckPermissionsForEntity(User account, IReadOnlyCollection<ReservedNamespace> reservedNamespaces)
5473
{
5574
if (!reservedNamespaces.Any())

src/NuGetGallery.Services/Permissions/ActionsRequiringPermissions.cs

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,163 +8,168 @@ namespace NuGetGallery
88
/// </summary>
99
public static class ActionsRequiringPermissions
1010
{
11-
private const PermissionsRequirement RequireOwnerOrSiteAdmin =
12-
PermissionsRequirement.Owner | PermissionsRequirement.SiteAdmin;
13-
private const PermissionsRequirement RequireOwnerOrSiteAdminOrOrganizationAdmin =
14-
PermissionsRequirement.Owner | PermissionsRequirement.SiteAdmin | PermissionsRequirement.OrganizationAdmin;
15-
private const PermissionsRequirement RequireOwnerOrOrganizationAdmin =
11+
public static bool AdminAccessEnabled { get; set; } = true;
12+
13+
private static PermissionsRequirement AdminRequirement =>
14+
AdminAccessEnabled ? PermissionsRequirement.SiteAdmin : PermissionsRequirement.Unsatisfiable;
15+
16+
private static PermissionsRequirement RequireOwnerOrSiteAdmin =>
17+
PermissionsRequirement.Owner | AdminRequirement;
18+
private static PermissionsRequirement RequireOwnerOrSiteAdminOrOrganizationAdmin =>
19+
PermissionsRequirement.Owner | AdminRequirement | PermissionsRequirement.OrganizationAdmin;
20+
private static PermissionsRequirement RequireOwnerOrOrganizationAdmin =>
1621
PermissionsRequirement.Owner | PermissionsRequirement.OrganizationAdmin;
17-
private const PermissionsRequirement RequireOwnerOrOrganizationMember =
22+
private static PermissionsRequirement RequireOwnerOrOrganizationMember =>
1823
PermissionsRequirement.Owner | PermissionsRequirement.OrganizationAdmin | PermissionsRequirement.OrganizationCollaborator;
19-
private const PermissionsRequirement RequireOwnerOrSiteAdminOrOrganizationMember =
20-
PermissionsRequirement.Owner | PermissionsRequirement.SiteAdmin | PermissionsRequirement.OrganizationAdmin | PermissionsRequirement.OrganizationCollaborator;
24+
private static PermissionsRequirement RequireOwnerOrSiteAdminOrOrganizationMember =>
25+
PermissionsRequirement.Owner | AdminRequirement | PermissionsRequirement.OrganizationAdmin | PermissionsRequirement.OrganizationCollaborator;
2126

2227
/// <summary>
2328
/// The action of seeing private metadata about a package.
2429
/// For example, if a package is validating, only users who can perform this action can see the metadata of the package.
2530
/// </summary>
26-
public static ActionRequiringPackagePermissions DisplayPrivatePackageMetadata =
31+
public static ActionRequiringPackagePermissions DisplayPrivatePackageMetadata =>
2732
new ActionRequiringPackagePermissions(
2833
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
2934
packageRegistrationPermissionsRequirement: RequireOwnerOrSiteAdmin);
3035

3136
/// <summary>
3237
/// The action of uploading a new package ID.
3338
/// </summary>
34-
public static ActionRequiringReservedNamespacePermissions UploadNewPackageId =
39+
public static ActionRequiringReservedNamespacePermissions UploadNewPackageId =>
3540
new ActionRequiringReservedNamespacePermissions(
3641
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
3742
reservedNamespacePermissionsRequirement: PermissionsRequirement.Owner);
3843

3944
/// <summary>
4045
/// The action of uploading a new version of an existing package ID.
4146
/// </summary>
42-
public static ActionRequiringPackagePermissions UploadNewPackageVersion =
47+
public static ActionRequiringPackagePermissions UploadNewPackageVersion =>
4348
new ActionRequiringPackagePermissions(
4449
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
4550
packageRegistrationPermissionsRequirement: PermissionsRequirement.Owner);
4651

4752
/// <summary>
4853
/// The action of uploading a symbols package for an existing package.
4954
/// </summary>
50-
public static ActionRequiringPackagePermissions UploadSymbolPackage =
55+
public static ActionRequiringPackagePermissions UploadSymbolPackage =>
5156
new ActionRequiringPackagePermissions(
5257
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
5358
packageRegistrationPermissionsRequirement: PermissionsRequirement.Owner);
5459

5560
/// <summary>
5661
/// The action of deleting a symbols package for an existing package.
5762
/// </summary>
58-
public static ActionRequiringPackagePermissions DeleteSymbolPackage =
63+
public static ActionRequiringPackagePermissions DeleteSymbolPackage =>
5964
new ActionRequiringPackagePermissions(
6065
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
6166
packageRegistrationPermissionsRequirement: RequireOwnerOrSiteAdmin);
6267

6368
/// <summary>
6469
/// The action of verify a package verification key.
6570
/// </summary>
66-
public static ActionRequiringPackagePermissions VerifyPackage =
71+
public static ActionRequiringPackagePermissions VerifyPackage =>
6772
new ActionRequiringPackagePermissions(
6873
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
6974
packageRegistrationPermissionsRequirement: PermissionsRequirement.Owner);
7075

7176
/// <summary>
7277
/// The action of editing an existing version of an existing package ID.
7378
/// </summary>
74-
public static ActionRequiringPackagePermissions EditPackage =
79+
public static ActionRequiringPackagePermissions EditPackage =>
7580
new ActionRequiringPackagePermissions(
7681
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
7782
packageRegistrationPermissionsRequirement: RequireOwnerOrSiteAdmin);
7883

7984
/// <summary>
8085
/// The action of unlisting or relisting an existing version of an existing package ID.
8186
/// </summary>
82-
public static ActionRequiringPackagePermissions UnlistOrRelistPackage =
87+
public static ActionRequiringPackagePermissions UnlistOrRelistPackage =>
8388
new ActionRequiringPackagePermissions(
8489
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
8590
packageRegistrationPermissionsRequirement: RequireOwnerOrSiteAdmin);
8691

8792
/// <summary>
8893
/// The action of deprecating an existing version of an existing package ID.
8994
/// </summary>
90-
public static ActionRequiringPackagePermissions DeprecatePackage =
95+
public static ActionRequiringPackagePermissions DeprecatePackage =>
9196
new ActionRequiringPackagePermissions(
9297
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
9398
packageRegistrationPermissionsRequirement: RequireOwnerOrSiteAdmin);
9499

95100
/// <summary>
96101
/// The action of managing the ownership of an existing package ID.
97102
/// </summary>
98-
public static ActionRequiringPackagePermissions ManagePackageOwnership =
103+
public static ActionRequiringPackagePermissions ManagePackageOwnership =>
99104
new ActionRequiringPackagePermissions(
100105
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationAdmin,
101106
packageRegistrationPermissionsRequirement: RequireOwnerOrSiteAdmin);
102107

103108
/// <summary>
104109
/// The action of reporting an existing package ID as the owner of the package.
105110
/// </summary>
106-
public static ActionRequiringPackagePermissions ReportPackageAsOwner =
111+
public static ActionRequiringPackagePermissions ReportPackageAsOwner =>
107112
new ActionRequiringPackagePermissions(
108113
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
109114
packageRegistrationPermissionsRequirement: PermissionsRequirement.Owner);
110115

111116
/// <summary>
112117
/// The action of seeing a breadcrumb linking the user back to their profile when performing actions on a package.
113118
/// </summary>
114-
public static ActionRequiringPackagePermissions ShowProfileBreadcrumb =
119+
public static ActionRequiringPackagePermissions ShowProfileBreadcrumb =>
115120
new ActionRequiringPackagePermissions(
116121
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationMember,
117122
packageRegistrationPermissionsRequirement: PermissionsRequirement.Owner);
118123

119124
/// <summary>
120125
/// The action of handling package ownership requests for a user to become an owner of a package.
121126
/// </summary>
122-
public static ActionRequiringAccountPermissions HandlePackageOwnershipRequest =
127+
public static ActionRequiringAccountPermissions HandlePackageOwnershipRequest =>
123128
new ActionRequiringAccountPermissions(
124129
accountPermissionsRequirement: RequireOwnerOrOrganizationAdmin);
125130

126131
/// <summary>
127132
/// The action of viewing (read-only) a user or organization account.
128133
/// </summary>
129-
public static ActionRequiringAccountPermissions ViewAccount =
134+
public static ActionRequiringAccountPermissions ViewAccount =>
130135
new ActionRequiringAccountPermissions(
131136
accountPermissionsRequirement: RequireOwnerOrSiteAdminOrOrganizationMember);
132137

133138
/// <summary>
134139
/// The action of managing a user or organization account. This includes confirming an account,
135140
/// changing the email address, changing email subscriptions, modifying sign-in credentials, etc.
136141
/// </summary>
137-
public static ActionRequiringAccountPermissions ManageAccount =
142+
public static ActionRequiringAccountPermissions ManageAccount =>
138143
new ActionRequiringAccountPermissions(
139144
accountPermissionsRequirement: RequireOwnerOrOrganizationAdmin);
140145

141146
/// <summary>
142147
/// The action of managing an organization's memberships.
143148
/// </summary>
144-
public static ActionRequiringAccountPermissions ManageMembership =
149+
public static ActionRequiringAccountPermissions ManageMembership =>
145150
new ActionRequiringAccountPermissions(
146151
accountPermissionsRequirement: RequireOwnerOrSiteAdminOrOrganizationAdmin);
147152

148153
/// <summary>
149154
/// The action of changing a package's required signer.
150155
/// </summary>
151-
public static ActionRequiringPackagePermissions ManagePackageRequiredSigner =
156+
public static ActionRequiringPackagePermissions ManagePackageRequiredSigner =>
152157
new ActionRequiringPackagePermissions(
153158
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrOrganizationAdmin,
154159
packageRegistrationPermissionsRequirement: RequireOwnerOrOrganizationAdmin);
155160

156161
/// <summary>
157162
/// The action of adding a package to a reserved namespace that the package is in.
158163
/// </summary>
159-
public static ActionRequiringReservedNamespacePermissions AddPackageToReservedNamespace =
164+
public static ActionRequiringReservedNamespacePermissions AddPackageToReservedNamespace =>
160165
new ActionRequiringReservedNamespacePermissions(
161166
accountOnBehalfOfPermissionsRequirement: PermissionsRequirement.Owner,
162167
reservedNamespacePermissionsRequirement: PermissionsRequirement.Owner);
163168

164169
/// <summary>
165170
/// The action of removing a package from a reserved namespace that the package is in.
166171
/// </summary>
167-
public static ActionRequiringReservedNamespacePermissions RemovePackageFromReservedNamespace =
172+
public static ActionRequiringReservedNamespacePermissions RemovePackageFromReservedNamespace =>
168173
new ActionRequiringReservedNamespacePermissions(
169174
accountOnBehalfOfPermissionsRequirement: RequireOwnerOrSiteAdminOrOrganizationAdmin,
170175
reservedNamespacePermissionsRequirement: RequireOwnerOrOrganizationAdmin);

0 commit comments

Comments
 (0)