summaryrefslogtreecommitdiffstats
path: root/routers/web/repo/issue.go
diff options
context:
space:
mode:
authorZettat123 <zettat123@gmail.com>2023-02-16 01:29:13 +0800
committerGitHub <noreply@github.com>2023-02-15 12:29:13 -0500
commit0ab22a1a020865c9906487cf7735796ff01c4fd2 (patch)
treec591b41ca81d6b8d5211eec36844f1e1977f9dce /routers/web/repo/issue.go
parent2c04595762b5c6ecfef8a32b05de7a5ef5f7066c (diff)
downloadgitea-0ab22a1a020865c9906487cf7735796ff01c4fd2.tar.gz
gitea-0ab22a1a020865c9906487cf7735796ff01c4fd2.zip
fix incorrect role labels for migrated issues and comments (#22914)
Fix #22797. ## Reason If a comment was migrated from other platforms, this comment may have an original author and its poster is always not the original author. When the `roleDescriptor` func get the poster's role descriptor for a comment, it does not check if the comment has an original author. So the migrated comments' original authors might be marked as incorrect roles. --------- Co-authored-by: zeripath <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'routers/web/repo/issue.go')
-rw-r--r--routers/web/repo/issue.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 4d799c24b8..42dcfb382d 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -1142,7 +1142,11 @@ func NewIssuePost(ctx *context.Context) {
}
// roleDescriptor returns the Role Descriptor for a comment in/with the given repo, poster and issue
-func roleDescriptor(ctx stdCtx.Context, repo *repo_model.Repository, poster *user_model.User, issue *issues_model.Issue) (issues_model.RoleDescriptor, error) {
+func roleDescriptor(ctx stdCtx.Context, repo *repo_model.Repository, poster *user_model.User, issue *issues_model.Issue, hasOriginalAuthor bool) (issues_model.RoleDescriptor, error) {
+ if hasOriginalAuthor {
+ return issues_model.RoleDescriptorNone, nil
+ }
+
perm, err := access_model.GetUserRepoPermission(ctx, repo, poster)
if err != nil {
return issues_model.RoleDescriptorNone, err
@@ -1444,7 +1448,7 @@ func ViewIssue(ctx *context.Context) {
// check if dependencies can be created across repositories
ctx.Data["AllowCrossRepositoryDependencies"] = setting.Service.AllowCrossRepositoryDependencies
- if issue.ShowRole, err = roleDescriptor(ctx, repo, issue.Poster, issue); err != nil {
+ if issue.ShowRole, err = roleDescriptor(ctx, repo, issue.Poster, issue, issue.HasOriginalAuthor()); err != nil {
ctx.ServerError("roleDescriptor", err)
return
}
@@ -1483,7 +1487,7 @@ func ViewIssue(ctx *context.Context) {
continue
}
- comment.ShowRole, err = roleDescriptor(ctx, repo, comment.Poster, issue)
+ comment.ShowRole, err = roleDescriptor(ctx, repo, comment.Poster, issue, comment.HasOriginalAuthor())
if err != nil {
ctx.ServerError("roleDescriptor", err)
return
@@ -1582,7 +1586,7 @@ func ViewIssue(ctx *context.Context) {
continue
}
- c.ShowRole, err = roleDescriptor(ctx, repo, c.Poster, issue)
+ c.ShowRole, err = roleDescriptor(ctx, repo, c.Poster, issue, c.HasOriginalAuthor())
if err != nil {
ctx.ServerError("roleDescriptor", err)
return