aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortechknowlogick <techknowlogick@users.noreply.github.com>2017-09-12 05:25:42 -0400
committerLauris BH <lauris@nix.lv>2017-09-12 12:25:42 +0300
commit9bdbfbf6f3289f4df0df5aae9998a08483f22218 (patch)
tree5ae5d89fbb745876517fba4abb2a0c007a3654de
parent3fecf94086be1b5f2bddd48cebc0e1ca4702de5c (diff)
downloadgitea-9bdbfbf6f3289f4df0df5aae9998a08483f22218.tar.gz
gitea-9bdbfbf6f3289f4df0df5aae9998a08483f22218.zip
Disable custom Git Hooks globally via configuration file (#2450)
* Create option to disable githooks globally via configuration file * Update comment in app.ini to align with @ethantkoenig's suggestion Signed-off-by: Matti Ranta <matti@mdranta.net>
-rw-r--r--conf/app.ini2
-rw-r--r--models/user.go2
-rw-r--r--modules/setting/setting.go2
-rw-r--r--modules/templates/helper.go3
-rw-r--r--templates/admin/user/edit.tmpl2
5 files changed, 9 insertions, 2 deletions
diff --git a/conf/app.ini b/conf/app.ini
index 676321d7d5..9674b815c9 100644
--- a/conf/app.ini
+++ b/conf/app.ini
@@ -206,6 +206,8 @@ REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER
MIN_PASSWORD_LENGTH = 6
; True when users are allowed to import local server paths
IMPORT_LOCAL_PATHS = false
+; Prevent all users (including admin) from creating custom git hooks
+DISABLE_GIT_HOOKS = false
[openid]
;
diff --git a/models/user.go b/models/user.go
index 01f14edb7f..1e2502ebc0 100644
--- a/models/user.go
+++ b/models/user.go
@@ -237,7 +237,7 @@ func (u *User) CanCreateOrganization() bool {
// CanEditGitHook returns true if user can edit Git hooks.
func (u *User) CanEditGitHook() bool {
- return u.IsAdmin || u.AllowGitHook
+ return !setting.DisableGitHooks && (u.IsAdmin || u.AllowGitHook)
}
// CanImportLocal returns true if user can migrate repository by local path.
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index 00aaad6913..721dd0f0f7 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -124,6 +124,7 @@ var (
ReverseProxyAuthUser string
MinPasswordLength int
ImportLocalPaths bool
+ DisableGitHooks bool
// Database settings
UseSQLite3 bool
@@ -817,6 +818,7 @@ func NewContext() {
ReverseProxyAuthUser = sec.Key("REVERSE_PROXY_AUTHENTICATION_USER").MustString("X-WEBAUTH-USER")
MinPasswordLength = sec.Key("MIN_PASSWORD_LENGTH").MustInt(6)
ImportLocalPaths = sec.Key("IMPORT_LOCAL_PATHS").MustBool(false)
+ DisableGitHooks = sec.Key("DISABLE_GIT_HOOKS").MustBool(false)
InternalToken = sec.Key("INTERNAL_TOKEN").String()
if len(InternalToken) == 0 {
secretBytes := make([]byte, 32)
diff --git a/modules/templates/helper.go b/modules/templates/helper.go
index 821ff6c9c7..5ac0f6ee54 100644
--- a/modules/templates/helper.go
+++ b/modules/templates/helper.go
@@ -155,6 +155,9 @@ func NewFuncMap() []template.FuncMap {
}
return out.String()
},
+ "DisableGitHooks": func() bool {
+ return setting.DisableGitHooks
+ },
}}
}
diff --git a/templates/admin/user/edit.tmpl b/templates/admin/user/edit.tmpl
index 4feeef302a..ae7cb56616 100644
--- a/templates/admin/user/edit.tmpl
+++ b/templates/admin/user/edit.tmpl
@@ -86,7 +86,7 @@
<div class="inline field">
<div class="ui checkbox">
<label><strong>{{.i18n.Tr "admin.users.allow_git_hook"}}</strong></label>
- <input name="allow_git_hook" type="checkbox" {{if .User.CanEditGitHook}}checked{{end}}>
+ <input name="allow_git_hook" type="checkbox" {{if .User.CanEditGitHook}}checked{{end}} {{if DisableGitHooks}}disabled{{end}}>
</div>
</div>
<div class="inline field">