diff --git a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs index a6e1dc69ab..2e5b7385ae 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/DocumentType/DocumentTypeControllerBase.cs @@ -41,6 +41,10 @@ public abstract class DocumentTypeControllerBase : ManagementApiControllerBase .WithTitle("Invalid property type alias") .WithDetail("One or more property type aliases are invalid") .Build()), + ContentTypeOperationStatus.PropertyTypeAliasCannotEqualContentTypeAlias => new BadRequestObjectResult(problemDetailsBuilder + .WithTitle("Invalid property type alias") + .WithDetail("The property type alias cannot be the same as the content type alias") + .Build()), ContentTypeOperationStatus.InvalidContainerName => new BadRequestObjectResult(problemDetailsBuilder .WithTitle("Invalid container name") .WithDetail("One or more container names are invalid") diff --git a/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingServiceBase.cs b/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingServiceBase.cs index ed818dc71b..46c4508095 100644 --- a/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingServiceBase.cs +++ b/src/Umbraco.Core/Services/ContentTypeEditing/ContentTypeEditingServiceBase.cs @@ -200,6 +200,12 @@ internal abstract class ContentTypeEditingServiceBase propertyType.Alias.Equals(model.Alias, StringComparison.OrdinalIgnoreCase))) + { + return ContentTypeOperationStatus.PropertyTypeAliasCannotEqualContentTypeAlias; + } + // Validate properties for reserved aliases. if (ContainsReservedPropertyTypeAlias(model)) { @@ -410,8 +416,7 @@ internal abstract class ContentTypeEditingServiceBase x.Name)) .ToArray(); - return model.Properties.Any(propertyType => propertyType.Alias.Equals(model.Alias, StringComparison.OrdinalIgnoreCase) - || reservedPropertyTypeNames.InvariantContains(propertyType.Alias)); + return model.Properties.Any(propertyType => reservedPropertyTypeNames.InvariantContains(propertyType.Alias)); } private bool IsUnsafeAlias(string alias) => alias.IsNullOrWhiteSpace() diff --git a/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs b/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs index 9f9c46e874..21eeedb1d5 100644 --- a/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs +++ b/src/Umbraco.Core/Services/OperationStatus/ContentTypeOperationStatus.cs @@ -6,6 +6,7 @@ public enum ContentTypeOperationStatus DuplicateAlias, InvalidAlias, InvalidPropertyTypeAlias, + PropertyTypeAliasCannotEqualContentTypeAlias, DuplicatePropertyTypeAlias, DataTypeNotFound, InvalidInheritance, diff --git a/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/ContentTypeEditingServiceTests.Create.cs b/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/ContentTypeEditingServiceTests.Create.cs index 2e261015e2..077a8add22 100644 --- a/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/ContentTypeEditingServiceTests.Create.cs +++ b/tests/Umbraco.Tests.Integration/Umbraco.Core/Services/ContentTypeEditingServiceTests.Create.cs @@ -774,7 +774,7 @@ public partial class ContentTypeEditingServiceTests var result = await ContentTypeEditingService.CreateAsync(createModel, Constants.Security.SuperUserKey); Assert.IsFalse(result.Success); - Assert.AreEqual(ContentTypeOperationStatus.InvalidPropertyTypeAlias, result.Status); + Assert.AreEqual(ContentTypeOperationStatus.PropertyTypeAliasCannotEqualContentTypeAlias, result.Status); } [Test]