aboutsummaryrefslogtreecommitdiff
path: root/modules/middleware/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/middleware/repo.go')
-rw-r--r--modules/middleware/repo.go20
1 files changed, 17 insertions, 3 deletions
diff --git a/modules/middleware/repo.go b/modules/middleware/repo.go
index a200d6d6..12164632 100644
--- a/modules/middleware/repo.go
+++ b/modules/middleware/repo.go
@@ -10,6 +10,8 @@ import (
"strings"
"github.com/Unknwon/macaron"
+ "github.com/mcuadros/go-version"
+ "github.com/mssola/user_agent"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/base"
@@ -18,6 +20,11 @@ import (
"github.com/gogits/gogs/modules/setting"
)
+const (
+ FIREFOX_COPY_SUPPORT = "41.0"
+ CHROME_COPY_SUPPORT = "43.0.2356"
+)
+
func ApiRepoAssignment() macaron.Handler {
return func(ctx *Context) {
userName := ctx.Params(":username")
@@ -34,7 +41,7 @@ func ApiRepoAssignment() macaron.Handler {
} else {
u, err = models.GetUserByName(userName)
if err != nil {
- if err == models.ErrUserNotExist {
+ if models.IsErrUserNotExist(err) {
ctx.Error(404)
} else {
ctx.JSON(500, &base.ApiJsonErr{"GetUserByName: " + err.Error(), base.DOC_URL})
@@ -210,7 +217,7 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler {
} else {
u, err = models.GetUserByName(userName)
if err != nil {
- if err == models.ErrUserNotExist {
+ if models.IsErrUserNotExist(err) {
ctx.Handle(404, "GetUserByName", err)
} else {
ctx.Handle(500, "GetUserByName", err)
@@ -345,10 +352,17 @@ func RepoAssignment(redirect bool, args ...bool) macaron.Handler {
ctx.Data["BranchName"] = ctx.Repo.BranchName
ctx.Data["CommitId"] = ctx.Repo.CommitId
+
+ userAgent := ctx.Req.Header.Get("User-Agent")
+ ua := user_agent.New(userAgent)
+ browserName, browserVer := ua.Browser()
+
+ ctx.Data["BrowserSupportsCopy"] = (browserName == "Chrome" && version.Compare(browserVer, CHROME_COPY_SUPPORT, ">=")) ||
+ (browserName == "Firefox" && version.Compare(browserVer, FIREFOX_COPY_SUPPORT, ">="))
}
}
-func RequireAdmin() macaron.Handler {
+func RequireRepoAdmin() macaron.Handler {
return func(ctx *Context) {
if ctx.Repo.AccessMode < models.ACCESS_MODE_ADMIN {
if !ctx.IsSigned {