mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	Remove some unnecessary template helpers (#33069)
DisableGitHooks and DisableImportLocal are only used when editing a user, so only set them in `editUserCommon`
This commit is contained in:
		| @@ -13,8 +13,9 @@ import ( | |||||||
| 	"code.gitea.io/gitea/modules/log" | 	"code.gitea.io/gitea/modules/log" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var ( |  | ||||||
| // Security settings | // Security settings | ||||||
|  |  | ||||||
|  | var ( | ||||||
| 	InstallLock                        bool | 	InstallLock                        bool | ||||||
| 	SecretKey                          string | 	SecretKey                          string | ||||||
| 	InternalToken                      string // internal access token | 	InternalToken                      string // internal access token | ||||||
| @@ -27,7 +28,7 @@ var ( | |||||||
| 	ReverseProxyTrustedProxies         []string | 	ReverseProxyTrustedProxies         []string | ||||||
| 	MinPasswordLength                  int | 	MinPasswordLength                  int | ||||||
| 	ImportLocalPaths                   bool | 	ImportLocalPaths                   bool | ||||||
| 	DisableGitHooks                    bool | 	DisableGitHooks                    = true | ||||||
| 	DisableWebhooks                    bool | 	DisableWebhooks                    bool | ||||||
| 	OnlyAllowPushIfGiteaEnvironmentSet bool | 	OnlyAllowPushIfGiteaEnvironmentSet bool | ||||||
| 	PasswordComplexity                 []string | 	PasswordComplexity                 []string | ||||||
|   | |||||||
| @@ -131,15 +131,9 @@ func NewFuncMap() template.FuncMap { | |||||||
| 		"EnableTimetracking": func() bool { | 		"EnableTimetracking": func() bool { | ||||||
| 			return setting.Service.EnableTimetracking | 			return setting.Service.EnableTimetracking | ||||||
| 		}, | 		}, | ||||||
| 		"DisableGitHooks": func() bool { |  | ||||||
| 			return setting.DisableGitHooks |  | ||||||
| 		}, |  | ||||||
| 		"DisableWebhooks": func() bool { | 		"DisableWebhooks": func() bool { | ||||||
| 			return setting.DisableWebhooks | 			return setting.DisableWebhooks | ||||||
| 		}, | 		}, | ||||||
| 		"DisableImportLocal": func() bool { |  | ||||||
| 			return !setting.ImportLocalPaths |  | ||||||
| 		}, |  | ||||||
| 		"UserThemeName": userThemeName, | 		"UserThemeName": userThemeName, | ||||||
| 		"NotificationSettings": func() map[string]any { | 		"NotificationSettings": func() map[string]any { | ||||||
| 			return map[string]any{ | 			return map[string]any{ | ||||||
|   | |||||||
| @@ -313,6 +313,8 @@ func editUserCommon(ctx *context.Context) { | |||||||
| 	ctx.Data["PageIsAdminUsers"] = true | 	ctx.Data["PageIsAdminUsers"] = true | ||||||
| 	ctx.Data["DisableRegularOrgCreation"] = setting.Admin.DisableRegularOrgCreation | 	ctx.Data["DisableRegularOrgCreation"] = setting.Admin.DisableRegularOrgCreation | ||||||
| 	ctx.Data["DisableMigrations"] = setting.Repository.DisableMigrations | 	ctx.Data["DisableMigrations"] = setting.Repository.DisableMigrations | ||||||
|  | 	ctx.Data["DisableGitHooks"] = setting.DisableGitHooks | ||||||
|  | 	ctx.Data["DisableImportLocal"] = !setting.ImportLocalPaths | ||||||
| 	ctx.Data["AllowedUserVisibilityModes"] = setting.Service.AllowedUserVisibilityModesSlice.ToVisibleTypeSlice() | 	ctx.Data["AllowedUserVisibilityModes"] = setting.Service.AllowedUserVisibilityModesSlice.ToVisibleTypeSlice() | ||||||
| 	ctx.Data["DisableGravatar"] = setting.Config().Picture.DisableGravatar.Value(ctx) | 	ctx.Data["DisableGravatar"] = setting.Config().Picture.DisableGravatar.Value(ctx) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -128,16 +128,16 @@ | |||||||
| 						<input name="restricted" type="checkbox" {{if .User.IsRestricted}}checked{{end}}> | 						<input name="restricted" type="checkbox" {{if .User.IsRestricted}}checked{{end}}> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 				<div class="inline field {{if DisableGitHooks}}tw-hidden{{end}}"> | 				<div class="inline field {{if .DisableGitHooks}}tw-hidden{{end}}"> | ||||||
| 					<div class="ui checkbox" data-tooltip-content="{{ctx.Locale.Tr "admin.users.allow_git_hook_tooltip"}}"> | 					<div class="ui checkbox" data-tooltip-content="{{ctx.Locale.Tr "admin.users.allow_git_hook_tooltip"}}"> | ||||||
| 						<label><strong>{{ctx.Locale.Tr "admin.users.allow_git_hook"}}</strong></label> | 						<label><strong>{{ctx.Locale.Tr "admin.users.allow_git_hook"}}</strong></label> | ||||||
| 						<input name="allow_git_hook" type="checkbox" {{if .User.CanEditGitHook}}checked{{end}} {{if DisableGitHooks}}disabled{{end}}> | 						<input name="allow_git_hook" type="checkbox" {{if .User.CanEditGitHook}}checked{{end}} {{if .DisableGitHooks}}disabled{{end}}> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 				<div class="inline field {{if or (DisableImportLocal) (.DisableMigrations)}}tw-hidden{{end}}"> | 				<div class="inline field {{if or (.DisableImportLocal) (.DisableMigrations)}}tw-hidden{{end}}"> | ||||||
| 					<div class="ui checkbox"> | 					<div class="ui checkbox"> | ||||||
| 						<label><strong>{{ctx.Locale.Tr "admin.users.allow_import_local"}}</strong></label> | 						<label><strong>{{ctx.Locale.Tr "admin.users.allow_import_local"}}</strong></label> | ||||||
| 						<input name="allow_import_local" type="checkbox" {{if .User.CanImportLocal}}checked{{end}} {{if DisableImportLocal}}disabled{{end}}> | 						<input name="allow_import_local" type="checkbox" {{if .User.CanImportLocal}}checked{{end}} {{if .DisableImportLocal}}disabled{{end}}> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 				{{if not .DisableRegularOrgCreation}} | 				{{if not .DisableRegularOrgCreation}} | ||||||
|   | |||||||
| @@ -1,3 +1,2 @@ | |||||||
| #!/bin/bash | #!/bin/bash | ||||||
|  | echo "TestGitHookScript" | ||||||
| echo Hello, World! |  | ||||||
|   | |||||||
| @@ -12,19 +12,24 @@ import ( | |||||||
| 	repo_model "code.gitea.io/gitea/models/repo" | 	repo_model "code.gitea.io/gitea/models/repo" | ||||||
| 	"code.gitea.io/gitea/models/unittest" | 	"code.gitea.io/gitea/models/unittest" | ||||||
| 	user_model "code.gitea.io/gitea/models/user" | 	user_model "code.gitea.io/gitea/models/user" | ||||||
|  | 	"code.gitea.io/gitea/modules/setting" | ||||||
| 	api "code.gitea.io/gitea/modules/structs" | 	api "code.gitea.io/gitea/modules/structs" | ||||||
|  | 	"code.gitea.io/gitea/modules/test" | ||||||
| 	"code.gitea.io/gitea/tests" | 	"code.gitea.io/gitea/tests" | ||||||
|  |  | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| const testHookContent = `#!/bin/bash | func TestAPIGitHooks(t *testing.T) { | ||||||
|  | 	defer tests.PrepareTestEnv(t)() | ||||||
|  | 	defer test.MockVariableValue(&setting.DisableGitHooks, false)() | ||||||
|  |  | ||||||
| echo Hello, World! | 	const testHookContent = `#!/bin/bash | ||||||
|  | echo "TestGitHookScript" | ||||||
| ` | ` | ||||||
|  |  | ||||||
| func TestAPIListGitHooks(t *testing.T) { | 	t.Run("ListGitHooks", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 37}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 37}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -47,10 +52,10 @@ func TestAPIListGitHooks(t *testing.T) { | |||||||
| 				assert.Empty(t, apiGitHook.Content) | 				assert.Empty(t, apiGitHook.Content) | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| } | 	}) | ||||||
|  |  | ||||||
| func TestAPIListGitHooksNoHooks(t *testing.T) { | 	t.Run("NoGitHooks", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -68,10 +73,10 @@ func TestAPIListGitHooksNoHooks(t *testing.T) { | |||||||
| 			assert.False(t, apiGitHook.IsActive) | 			assert.False(t, apiGitHook.IsActive) | ||||||
| 			assert.Empty(t, apiGitHook.Content) | 			assert.Empty(t, apiGitHook.Content) | ||||||
| 		} | 		} | ||||||
| } | 	}) | ||||||
|  |  | ||||||
| func TestAPIListGitHooksNoAccess(t *testing.T) { | 	t.Run("ListGitHooksNoAccess", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -81,10 +86,10 @@ func TestAPIListGitHooksNoAccess(t *testing.T) { | |||||||
| 		req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/hooks/git", owner.Name, repo.Name). | 		req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/hooks/git", owner.Name, repo.Name). | ||||||
| 			AddTokenAuth(token) | 			AddTokenAuth(token) | ||||||
| 		MakeRequest(t, req, http.StatusForbidden) | 		MakeRequest(t, req, http.StatusForbidden) | ||||||
| } | 	}) | ||||||
|  |  | ||||||
| func TestAPIGetGitHook(t *testing.T) { | 	t.Run("GetGitHook", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 37}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 37}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -99,10 +104,9 @@ func TestAPIGetGitHook(t *testing.T) { | |||||||
| 		DecodeJSON(t, resp, &apiGitHook) | 		DecodeJSON(t, resp, &apiGitHook) | ||||||
| 		assert.True(t, apiGitHook.IsActive) | 		assert.True(t, apiGitHook.IsActive) | ||||||
| 		assert.Equal(t, testHookContent, apiGitHook.Content) | 		assert.Equal(t, testHookContent, apiGitHook.Content) | ||||||
| } | 	}) | ||||||
|  | 	t.Run("GetGitHookNoAccess", func(t *testing.T) { | ||||||
| func TestAPIGetGitHookNoAccess(t *testing.T) { | 		defer tests.PrintCurrentTest(t)() | ||||||
| 	defer tests.PrepareTestEnv(t)() |  | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -112,10 +116,10 @@ func TestAPIGetGitHookNoAccess(t *testing.T) { | |||||||
| 		req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/hooks/git/pre-receive", owner.Name, repo.Name). | 		req := NewRequestf(t, "GET", "/api/v1/repos/%s/%s/hooks/git/pre-receive", owner.Name, repo.Name). | ||||||
| 			AddTokenAuth(token) | 			AddTokenAuth(token) | ||||||
| 		MakeRequest(t, req, http.StatusForbidden) | 		MakeRequest(t, req, http.StatusForbidden) | ||||||
| } | 	}) | ||||||
|  |  | ||||||
| func TestAPIEditGitHook(t *testing.T) { | 	t.Run("EditGitHook", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -142,10 +146,10 @@ func TestAPIEditGitHook(t *testing.T) { | |||||||
| 		DecodeJSON(t, resp, &apiGitHook2) | 		DecodeJSON(t, resp, &apiGitHook2) | ||||||
| 		assert.True(t, apiGitHook2.IsActive) | 		assert.True(t, apiGitHook2.IsActive) | ||||||
| 		assert.Equal(t, testHookContent, apiGitHook2.Content) | 		assert.Equal(t, testHookContent, apiGitHook2.Content) | ||||||
| } | 	}) | ||||||
|  |  | ||||||
| func TestAPIEditGitHookNoAccess(t *testing.T) { | 	t.Run("EditGitHookNoAccess", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -157,10 +161,10 @@ func TestAPIEditGitHookNoAccess(t *testing.T) { | |||||||
| 			Content: testHookContent, | 			Content: testHookContent, | ||||||
| 		}).AddTokenAuth(token) | 		}).AddTokenAuth(token) | ||||||
| 		MakeRequest(t, req, http.StatusForbidden) | 		MakeRequest(t, req, http.StatusForbidden) | ||||||
| } | 	}) | ||||||
|  |  | ||||||
| func TestAPIDeleteGitHook(t *testing.T) { | 	t.Run("DeleteGitHook", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 37}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 37}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -180,10 +184,10 @@ func TestAPIDeleteGitHook(t *testing.T) { | |||||||
| 		DecodeJSON(t, resp, &apiGitHook2) | 		DecodeJSON(t, resp, &apiGitHook2) | ||||||
| 		assert.False(t, apiGitHook2.IsActive) | 		assert.False(t, apiGitHook2.IsActive) | ||||||
| 		assert.Empty(t, apiGitHook2.Content) | 		assert.Empty(t, apiGitHook2.Content) | ||||||
| } | 	}) | ||||||
|  |  | ||||||
| func TestAPIDeleteGitHookNoAccess(t *testing.T) { | 	t.Run("DeleteGitHookNoAccess", func(t *testing.T) { | ||||||
| 	defer tests.PrepareTestEnv(t)() | 		defer tests.PrintCurrentTest(t)() | ||||||
|  |  | ||||||
| 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | 		repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||||
| 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | 		owner := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID}) | ||||||
| @@ -193,4 +197,5 @@ func TestAPIDeleteGitHookNoAccess(t *testing.T) { | |||||||
| 		req := NewRequestf(t, "DELETE", "/api/v1/repos/%s/%s/hooks/git/pre-receive", owner.Name, repo.Name). | 		req := NewRequestf(t, "DELETE", "/api/v1/repos/%s/%s/hooks/git/pre-receive", owner.Name, repo.Name). | ||||||
| 			AddTokenAuth(token) | 			AddTokenAuth(token) | ||||||
| 		MakeRequest(t, req, http.StatusForbidden) | 		MakeRequest(t, req, http.StatusForbidden) | ||||||
|  | 	}) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -93,7 +93,6 @@ COLORIZE             = true | |||||||
| LEVEL                = Debug | LEVEL                = Debug | ||||||
|  |  | ||||||
| [security] | [security] | ||||||
| DISABLE_GIT_HOOKS = false |  | ||||||
| INSTALL_LOCK   = true | INSTALL_LOCK   = true | ||||||
| SECRET_KEY     = 9pCviYTWSb | SECRET_KEY     = 9pCviYTWSb | ||||||
| INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ | INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ | ||||||
|   | |||||||
| @@ -94,7 +94,6 @@ COLORIZE             = true | |||||||
| LEVEL                = Debug | LEVEL                = Debug | ||||||
|  |  | ||||||
| [security] | [security] | ||||||
| DISABLE_GIT_HOOKS = false |  | ||||||
| INSTALL_LOCK   = true | INSTALL_LOCK   = true | ||||||
| SECRET_KEY     = 9pCviYTWSb | SECRET_KEY     = 9pCviYTWSb | ||||||
| INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ | INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ | ||||||
|   | |||||||
| @@ -94,7 +94,6 @@ COLORIZE             = true | |||||||
| LEVEL                = Debug | LEVEL                = Debug | ||||||
|  |  | ||||||
| [security] | [security] | ||||||
| DISABLE_GIT_HOOKS = false |  | ||||||
| INSTALL_LOCK   = true | INSTALL_LOCK   = true | ||||||
| SECRET_KEY     = 9pCviYTWSb | SECRET_KEY     = 9pCviYTWSb | ||||||
| INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ | INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTU1NTE2MTh9.hhSVGOANkaKk3vfCd2jDOIww4pUk0xtg9JRde5UogyQ | ||||||
|   | |||||||
| @@ -93,7 +93,6 @@ COLORIZE             = true | |||||||
| LEVEL                = Debug | LEVEL                = Debug | ||||||
|  |  | ||||||
| [security] | [security] | ||||||
| DISABLE_GIT_HOOKS = false |  | ||||||
| INSTALL_LOCK   = true | INSTALL_LOCK   = true | ||||||
| SECRET_KEY     = 9pCviYTWSb | SECRET_KEY     = 9pCviYTWSb | ||||||
| INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTI3OTU5ODN9.OQkH5UmzID2XBdwQ9TAI6Jj2t1X-wElVTjbE7aoN4I8 | INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE0OTI3OTU5ODN9.OQkH5UmzID2XBdwQ9TAI6Jj2t1X-wElVTjbE7aoN4I8 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user