diff options
Diffstat (limited to 'routers/private')
-rw-r--r-- | routers/private/branch.go | 24 | ||||
-rw-r--r-- | routers/private/internal.go | 1 |
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) } |