diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-09-14 16:16:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-14 16:16:22 +0800 |
commit | 1739e84ac02c0384c04576a00abab9348293f9c7 (patch) | |
tree | 1015e68f36421f274d2e883ff3ddb0cb29b6af71 /routers/private | |
parent | be3319b3d545289b772d7a92b4b62205863954d9 (diff) | |
download | gitea-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.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) } |