aboutsummaryrefslogtreecommitdiffstats
path: root/routers/private
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2017-09-14 16:16:22 +0800
committerGitHub <noreply@github.com>2017-09-14 16:16:22 +0800
commit1739e84ac02c0384c04576a00abab9348293f9c7 (patch)
tree1015e68f36421f274d2e883ff3ddb0cb29b6af71 /routers/private
parentbe3319b3d545289b772d7a92b4b62205863954d9 (diff)
downloadgitea-1739e84ac02c0384c04576a00abab9348293f9c7.tar.gz
gitea-1739e84ac02c0384c04576a00abab9348293f9c7.zip
improve protected branch to add whitelist support (#2451)
* improve protected branch to add whitelist support * fix lint * fix style check * fix tests * fix description on UI and import * fix test * bug fixed * fix tests and languages * move isSliceInt64Eq to util pkg; improve function names & typo
Diffstat (limited to 'routers/private')
-rw-r--r--routers/private/branch.go24
-rw-r--r--routers/private/internal.go1
2 files changed, 24 insertions, 1 deletions
diff --git a/routers/private/branch.go b/routers/private/branch.go
index 8e42f73039..448c61f1db 100644
--- a/routers/private/branch.go
+++ b/routers/private/branch.go
@@ -24,7 +24,29 @@ func GetProtectedBranchBy(ctx *macaron.Context) {
ctx.JSON(200, protectBranch)
} else {
ctx.JSON(200, &models.ProtectedBranch{
- CanPush: true,
+ ID: 0,
+ })
+ }
+}
+
+// CanUserPush returns if user push
+func CanUserPush(ctx *macaron.Context) {
+ pbID := ctx.ParamsInt64(":pbid")
+ userID := ctx.ParamsInt64(":userid")
+
+ protectBranch, err := models.GetProtectedBranchByID(pbID)
+ if err != nil {
+ ctx.JSON(500, map[string]interface{}{
+ "err": err.Error(),
+ })
+ return
+ } else if protectBranch != nil {
+ ctx.JSON(200, map[string]interface{}{
+ "can_push": protectBranch.CanUserPush(userID),
+ })
+ } else {
+ ctx.JSON(200, map[string]interface{}{
+ "can_push": false,
})
}
}
diff --git a/routers/private/internal.go b/routers/private/internal.go
index 3e7233226a..b69411dd06 100644
--- a/routers/private/internal.go
+++ b/routers/private/internal.go
@@ -42,6 +42,7 @@ func RegisterRoutes(m *macaron.Macaron) {
m.Group("/", func() {
m.Post("/ssh/:id/update", UpdatePublicKey)
m.Post("/push/update", PushUpdate)
+ m.Get("/protectedbranch/:pbid/:userid", CanUserPush)
m.Get("/branch/:id/*", GetProtectedBranchBy)
}, CheckInternalToken)
}