Merge branch 'stable-2.14' into stable-2.15

* stable-2.14:
  Allow to assign "Delete Own Changes" permission to Change Owners

Change-Id: Ibaba774641a45bf812f1bb8b595312268731751c
This commit is contained in:
David Pursehouse
2018-06-27 16:56:23 +09:00
3 changed files with 14 additions and 4 deletions

View File

@@ -950,9 +950,19 @@ public class ChangeIT extends AbstractDaemonTest {
@Test
@TestProjectInput(cloneAs = "user")
public void deleteChangeAsUserWithDeleteOwnChangesPermission() throws Exception {
public void deleteChangeAsUserWithDeleteOwnChangesPermissionForGroup() throws Exception {
allow("refs/*", Permission.DELETE_OWN_CHANGES, REGISTERED_USERS);
deleteChangeAsUser();
}
@Test
@TestProjectInput(cloneAs = "user")
public void deleteChangeAsUserWithDeleteOwnChangesPermissionForOwners() throws Exception {
allow("refs/*", Permission.DELETE_OWN_CHANGES, CHANGE_OWNER);
deleteChangeAsUser();
}
private void deleteChangeAsUser() throws Exception {
try {
PushOneCommit.Result changeResult =
pushFactory.create(db, user.getIdent(), testRepo).to("refs/for/master");

View File

@@ -156,7 +156,7 @@ class ChangeControl {
switch (status) {
case NEW:
case ABANDONED:
return (isOwner() && getRefControl().canDeleteOwnChanges())
return (isOwner() && getRefControl().canDeleteOwnChanges(isOwner()))
|| getProjectControl().isAdmin();
case MERGED:
default:

View File

@@ -286,8 +286,8 @@ public class RefControl {
}
/** @return true if this user can delete their own changes. */
boolean canDeleteOwnChanges() {
return canPerform(Permission.DELETE_OWN_CHANGES);
boolean canDeleteOwnChanges(boolean isChangeOwner) {
return canPerform(Permission.DELETE_OWN_CHANGES, isChangeOwner);
}
/** @return true if this user can edit topic names. */