Merge branch 'release/14.2' into v14/dev
This commit is contained in:
@@ -66,6 +66,10 @@ public class UpdateDomainsController : DocumentControllerBase
|
||||
.WithDetail("One or more of the specified domain names were conflicting with domain assignments to other content items.")
|
||||
.WithExtension("conflictingDomainNames", _domainPresentationFactory.CreateDomainAssignmentModels(result.Result.ConflictingDomains.EmptyNull()))
|
||||
.Build()),
|
||||
DomainOperationStatus.InvalidDomainName => BadRequest(problemDetailsBuilder
|
||||
.WithTitle("Invalid domain name detected")
|
||||
.WithDetail("One or more of the specified domain names were invalid.")
|
||||
.Build()),
|
||||
_ => StatusCode(StatusCodes.Status500InternalServerError, problemDetailsBuilder
|
||||
.WithTitle("Unknown domain update operation status.")
|
||||
.Build()),
|
||||
|
||||
@@ -24,5 +24,17 @@ public interface IAuthorizationHelper
|
||||
/// <param name="currentUser">The current user's principal.</param>
|
||||
/// <param name="user">The resulting <see cref="IUser" />, if the conversion is successful.</param>
|
||||
/// <returns>True if the conversion is successful, false otherwise</returns>
|
||||
bool TryGetUmbracoUser(IPrincipal currentUser, [NotNullWhen(true)] out IUser? user);
|
||||
bool TryGetUmbracoUser(IPrincipal currentUser, [NotNullWhen(true)] out IUser? user)
|
||||
{
|
||||
try
|
||||
{
|
||||
user = GetUmbracoUser(currentUser);
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
user = null;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Models.ContentEditing;
|
||||
using Umbraco.Cms.Core.Notifications;
|
||||
using Umbraco.Cms.Core.Persistence.Repositories;
|
||||
using Umbraco.Cms.Core.Routing;
|
||||
using Umbraco.Cms.Core.Scoping;
|
||||
using Umbraco.Cms.Core.Services.OperationStatus;
|
||||
using Umbraco.Extensions;
|
||||
@@ -201,6 +202,11 @@ public class DomainService : RepositoryService, IDomainService
|
||||
foreach (DomainModel domainModel in updateModel.Domains)
|
||||
{
|
||||
domainModel.DomainName = domainModel.DomainName.ToLowerInvariant();
|
||||
|
||||
if(Uri.IsWellFormedUriString(domainModel.DomainName, UriKind.RelativeOrAbsolute) is false)
|
||||
{
|
||||
return Attempt.FailWithStatus(DomainOperationStatus.InvalidDomainName, new DomainUpdateResult());
|
||||
}
|
||||
}
|
||||
|
||||
// make sure we're not attempting to assign duplicate domains
|
||||
|
||||
@@ -7,5 +7,6 @@ public enum DomainOperationStatus
|
||||
ContentNotFound,
|
||||
LanguageNotFound,
|
||||
DuplicateDomainName,
|
||||
ConflictingDomainName
|
||||
ConflictingDomainName,
|
||||
InvalidDomainName
|
||||
}
|
||||
|
||||
Submodule src/Umbraco.Web.UI.Client updated: 97f256a195...bb6abdc884
@@ -332,6 +332,22 @@ public class DomainAndUrlsTests : UmbracoIntegrationTest
|
||||
Assert.AreEqual(DomainOperationStatus.DuplicateDomainName, result.Status);
|
||||
}
|
||||
|
||||
[TestCase("https://*.umbraco.com")]
|
||||
[TestCase("&#€%#€")]
|
||||
[TestCase("¢”$¢”¢$≈{")]
|
||||
public async Task Cannot_Assign_Invalid_Domains(string domainName)
|
||||
{
|
||||
var domainService = GetRequiredService<IDomainService>();
|
||||
var updateModel = new DomainsUpdateModel
|
||||
{
|
||||
Domains = new DomainModel { DomainName = domainName, IsoCode = Cultures.First() }.Yield()
|
||||
};
|
||||
|
||||
var result = await domainService.UpdateDomainsAsync(Root.Key, updateModel);
|
||||
Assert.IsFalse(result.Success);
|
||||
Assert.AreEqual(DomainOperationStatus.InvalidDomainName, result.Status);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Cannot_Assign_Already_Used_Domains()
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json",
|
||||
"version": "14.2.0-rc",
|
||||
"version": "14.2.0-rc3",
|
||||
"assemblyVersion": {
|
||||
"precision": "build"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user