fix(web): forbid blocked users from reopening issues (#7010)

Closes https://codeberg.org/forgejo/forgejo/issues/6841.

Signed-off-by: Litchi Pi <litchi.pi@proton.me>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7010
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Litchi Pi <litchi.pi@proton.me>
Co-committed-by: Litchi Pi <litchi.pi@proton.me>
This commit is contained in:
Litchi Pi 2025-03-01 12:39:52 +00:00 committed by 0ko
parent ac08fc5b40
commit 9dd47d932f
6 changed files with 69 additions and 4 deletions

View file

@ -8,6 +8,7 @@ import (
model "code.gitea.io/gitea/models"
"code.gitea.io/gitea/models/db"
issues_model "code.gitea.io/gitea/models/issues"
repo_model "code.gitea.io/gitea/models/repo"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
@ -89,4 +90,24 @@ func TestBlockUser(t *testing.T) {
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 3, OwnerID: blockedUser.ID})
assert.Equal(t, repo_model.RepositoryReady, repo.Status)
})
t.Run("Issues", func(t *testing.T) {
doer := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
blockedUser := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
defer user_model.UnblockUser(db.DefaultContext, doer.ID, blockedUser.ID)
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2, OwnerID: doer.ID})
issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 4, RepoID: repo.ID}, "is_closed = true")
_, err := issues_model.ChangeIssueStatus(db.DefaultContext, issue, blockedUser, false)
require.NoError(t, err)
_, err = issues_model.ChangeIssueStatus(db.DefaultContext, issue, doer, true)
require.NoError(t, err)
require.NoError(t, BlockUser(db.DefaultContext, doer.ID, blockedUser.ID))
_, err = issues_model.ChangeIssueStatus(db.DefaultContext, issue, blockedUser, false)
require.Error(t, err)
})
}