Skip to content

Commit 467ff4d

Browse files
jonasfranzlunny
authored andcommitted
Fix milestone appliance and permission checks (#4271)
* Fix milestone appliance Fix missing permission check Signed-off-by: Jonas Franz <info@jonasfranz.software> * Fix comment * Add Gitea copyright line
1 parent 3f2f575 commit 467ff4d

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

routers/api/v1/repo/issue.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// Copyright 2016 The Gogs Authors. All rights reserved.
2+
// Copyright 2018 The Gitea Authors. All rights reserved.
23
// Use of this source code is governed by a MIT-style
34
// license that can be found in the LICENSE file.
45

@@ -165,7 +166,7 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) {
165166
// "$ref": "#/responses/Issue"
166167

167168
var deadlineUnix util.TimeStamp
168-
if form.Deadline != nil {
169+
if form.Deadline != nil && ctx.Repo.IsWriter() {
169170
deadlineUnix = util.TimeStamp(form.Deadline.Unix())
170171
}
171172

@@ -178,15 +179,22 @@ func CreateIssue(ctx *context.APIContext, form api.CreateIssueOption) {
178179
DeadlineUnix: deadlineUnix,
179180
}
180181

181-
// Get all assignee IDs
182-
assigneeIDs, err := models.MakeIDsFromAPIAssigneesToAdd(form.Assignee, form.Assignees)
183-
if err != nil {
184-
if models.IsErrUserNotExist(err) {
185-
ctx.Error(422, "", fmt.Sprintf("Assignee does not exist: [name: %s]", err))
186-
} else {
187-
ctx.Error(500, "AddAssigneeByName", err)
182+
var assigneeIDs = make([]int64, 0)
183+
var err error
184+
if ctx.Repo.IsWriter() {
185+
issue.MilestoneID = form.Milestone
186+
assigneeIDs, err = models.MakeIDsFromAPIAssigneesToAdd(form.Assignee, form.Assignees)
187+
if err != nil {
188+
if models.IsErrUserNotExist(err) {
189+
ctx.Error(422, "", fmt.Sprintf("Assignee does not exist: [name: %s]", err))
190+
} else {
191+
ctx.Error(500, "AddAssigneeByName", err)
192+
}
193+
return
188194
}
189-
return
195+
} else {
196+
// setting labels is not allowed if user is not a writer
197+
form.Labels = make([]int64, 0)
190198
}
191199

192200
if err := models.NewIssue(ctx.Repo.Repository, issue, form.Labels, assigneeIDs, nil); err != nil {

0 commit comments

Comments
 (0)