Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
57 lines
1.4 KiB
// Copyright 2017 The Gitea Authors. All rights reserved. |
|
// Use of this source code is governed by a MIT-style |
|
// license that can be found in the LICENSE file. |
|
|
|
package repo |
|
|
|
import ( |
|
"net/http" |
|
"strconv" |
|
|
|
"code.gitea.io/gitea/models" |
|
"code.gitea.io/gitea/modules/context" |
|
"code.gitea.io/gitea/modules/log" |
|
) |
|
|
|
// IssueWatch sets issue watching |
|
func IssueWatch(ctx *context.Context) { |
|
issue := GetActionIssue(ctx) |
|
if ctx.Written() { |
|
return |
|
} |
|
|
|
if !ctx.IsSigned || (ctx.User.ID != issue.PosterID && !ctx.Repo.CanReadIssuesOrPulls(issue.IsPull)) { |
|
if log.IsTrace() { |
|
if ctx.IsSigned { |
|
issueType := "issues" |
|
if issue.IsPull { |
|
issueType = "pulls" |
|
} |
|
log.Trace("Permission Denied: User %-v not the Poster (ID: %d) and cannot read %s in Repo %-v.\n"+ |
|
"User in Repo has Permissions: %-+v", |
|
ctx.User, |
|
log.NewColoredIDValue(issue.PosterID), |
|
issueType, |
|
ctx.Repo.Repository, |
|
ctx.Repo.Permission) |
|
} else { |
|
log.Trace("Permission Denied: Not logged in") |
|
} |
|
} |
|
ctx.Error(http.StatusForbidden) |
|
return |
|
} |
|
|
|
watch, err := strconv.ParseBool(ctx.Req.PostForm.Get("watch")) |
|
if err != nil { |
|
ctx.ServerError("watch is not bool", err) |
|
return |
|
} |
|
|
|
if err := models.CreateOrUpdateIssueWatch(ctx.User.ID, issue.ID, watch); err != nil { |
|
ctx.ServerError("CreateOrUpdateIssueWatch", err) |
|
return |
|
} |
|
|
|
ctx.Redirect(issue.HTMLURL(), http.StatusSeeOther) |
|
}
|
|
|