Skip to content

Commit fdd4b5e

Browse files
committed
change IsResolved to an function
Add permission check in UpdateResolveConversation
1 parent b27c8ad commit fdd4b5e

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

models/issue_comment.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@ type Comment struct {
121121
RemovedAssignee bool
122122
Assignee *User `xorm:"-"`
123123
ResolveDoerID int64
124-
IsResolved bool `xorm:"-"`
125124
ResolveDoer *User `xorm:"-"`
126125
OldTitle string
127126
NewTitle string
@@ -430,10 +429,14 @@ func (c *Comment) LoadResolveDoer() (err error) {
430429
if err != nil {
431430
return
432431
}
433-
c.IsResolved = true
434432
return
435433
}
436434

435+
// IsResolved check if an code comment is resolved
436+
func (c *Comment) IsResolved() bool {
437+
return c.ResolveDoerID != 0 && c.Type == CommentTypeCode
438+
}
439+
437440
// LoadDepIssueDetails loads Dependent Issue Details
438441
func (c *Comment) LoadDepIssueDetails() (err error) {
439442
if c.DependentIssueID <= 0 || c.DependentIssue != nil {

models/review.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,13 @@ func CanMarkConversation(issue *Issue, doer *User) (permResult bool, err error)
631631
}
632632

633633
if doer.ID != issue.PosterID {
634+
if issue.Repo == nil {
635+
err = issue.LoadRepo()
636+
if err != nil {
637+
return false, err
638+
}
639+
}
640+
634641
perm, err := GetUserRepoPermission(issue.Repo, doer)
635642
if err != nil {
636643
return false, err

routers/repo/pull_review.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ func UpdateResolveConversation(ctx *context.Context) {
7373
return
7474
}
7575

76+
var permResult bool
77+
if permResult, err = models.CanMarkConversation(issue, ctx.User); err != nil {
78+
ctx.ServerError("CanMarkConversation", err)
79+
return
80+
}
81+
if !permResult {
82+
ctx.ServerError("UpdateResolveConversation",
83+
fmt.Errorf("doer can't permission [usser_id: %d, issue_id: %d]",
84+
ctx.User.ID, issue.ID))
85+
return
86+
}
87+
7688
if !issue.IsPull {
7789
return
7890
}

0 commit comments

Comments
 (0)