Only consider alias duplicate if the key matches (#14169)
This commit is contained in:
@@ -271,6 +271,11 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
|
||||
return Attempt.FailWithStatus(commonValidationStatus, userGroup);
|
||||
}
|
||||
|
||||
if (_userGroupRepository.Get(userGroup.Alias) is not null)
|
||||
{
|
||||
return Attempt.FailWithStatus(UserGroupOperationStatus.DuplicateAlias, userGroup);
|
||||
}
|
||||
|
||||
return Attempt.SucceedWithStatus(UserGroupOperationStatus.Success, userGroup);
|
||||
}
|
||||
|
||||
@@ -327,6 +332,12 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
|
||||
return UserGroupOperationStatus.NotFound;
|
||||
}
|
||||
|
||||
IUserGroup? existing = _userGroupRepository.Get(userGroup.Alias);
|
||||
if (existing is not null && existing.Key != userGroup.Key)
|
||||
{
|
||||
return UserGroupOperationStatus.DuplicateAlias;
|
||||
}
|
||||
|
||||
return UserGroupOperationStatus.Success;
|
||||
}
|
||||
|
||||
@@ -350,11 +361,6 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
|
||||
return UserGroupOperationStatus.AliasTooLong;
|
||||
}
|
||||
|
||||
if (UserGroupHasUniqueAlias(userGroup) is false)
|
||||
{
|
||||
return UserGroupOperationStatus.DuplicateAlias;
|
||||
}
|
||||
|
||||
UserGroupOperationStatus startNodesValidationStatus = ValidateStartNodesExists(userGroup);
|
||||
if (startNodesValidationStatus is not UserGroupOperationStatus.Success)
|
||||
{
|
||||
@@ -391,8 +397,6 @@ internal sealed class UserGroupService : RepositoryService, IUserGroupService
|
||||
return UserGroupOperationStatus.Success;
|
||||
}
|
||||
|
||||
private bool UserGroupHasUniqueAlias(IUserGroup userGroup) => _userGroupRepository.Get(userGroup.Alias) is null;
|
||||
|
||||
/// <summary>
|
||||
/// Ensures that the user creating the user group is either an admin, or in the group itself.
|
||||
/// </summary>
|
||||
|
||||
@@ -148,4 +148,24 @@ public class UserGroupServiceValidationTests : UmbracoIntegrationTest
|
||||
Assert.IsFalse(updateResult.Success);
|
||||
Assert.AreEqual(UserGroupOperationStatus.DuplicateAlias, updateResult.Status);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task Can_Update_UserGroup_To_New_Name()
|
||||
{
|
||||
var userGroup = new UserGroup(ShortStringHelper)
|
||||
{
|
||||
Name = "Some Name",
|
||||
Alias = "someAlias"
|
||||
};
|
||||
var setupResult = await UserGroupService.CreateAsync(userGroup, Constants.Security.SuperUserId);
|
||||
Assert.IsTrue(setupResult.Success);
|
||||
|
||||
|
||||
var updateName = "New Name";
|
||||
userGroup.Name = updateName;
|
||||
var updateResult = await UserGroupService.UpdateAsync(userGroup, Constants.Security.SuperUserId);
|
||||
Assert.IsTrue(updateResult.Success);
|
||||
var updatedGroup = updateResult.Result;
|
||||
Assert.AreEqual(updateName, updatedGroup.Name);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user