[9.2.x] Backport Contexthandler: Add uname as response header #59930 (#59950)

* Contexthandler: Add uname as response header (#59930)

Signed-off-by: bergquist <carl.bergquist@gmail.com>
(cherry picked from commit 1b676d0d49)

* fixes tests broken due to moved featuremgt package

Signed-off-by: bergquist <carl.bergquist@gmail.com>

Signed-off-by: bergquist <carl.bergquist@gmail.com>
This commit is contained in:
Carl Bergquist
2022-12-07 15:27:34 +01:00
committed by GitHub
parent 6c73fd2635
commit 95d2adf251
10 changed files with 139 additions and 1 deletions
+2
View File
@@ -220,6 +220,7 @@ func getContextHandler(t *testing.T, cfg *setting.Cfg) *contexthandler.ContextHa
func setupScenarioContext(t *testing.T, url string) *scenarioContext {
cfg := setting.NewCfg()
cfg.IsFeatureToggleEnabled = func(key string) bool { return false }
sc := &scenarioContext{
url: url,
t: t,
@@ -248,6 +249,7 @@ func (s *fakeRenderService) Init() error {
func setupAccessControlScenarioContext(t *testing.T, cfg *setting.Cfg, url string, permissions []accesscontrol.Permission) (*scenarioContext, *HTTPServer) {
cfg.Quota.Enabled = false
cfg.IsFeatureToggleEnabled = func(key string) bool { return false }
store := sqlstore.InitTestDB(t)
hs := &HTTPServer{
+1
View File
@@ -29,6 +29,7 @@ func setupOAuthTest(t *testing.T, cfg *setting.Cfg) *web.Mux {
cfg = setting.NewCfg()
}
cfg.ErrTemplateName = "error-template"
cfg.IsFeatureToggleEnabled = func(key string) bool { return false }
sqlStore := sqlstore.InitTestDB(t)
+1
View File
@@ -636,6 +636,7 @@ func middlewareScenario(t *testing.T, desc string, fn scenarioFunc, cbs ...func(
loginMaxLifetime, err := gtime.ParseDuration("30d")
require.NoError(t, err)
cfg := setting.NewCfg()
cfg.IsFeatureToggleEnabled = func(key string) bool { return false }
cfg.LoginCookieName = "grafana_session"
cfg.LoginMaxLifetime = loginMaxLifetime
// Required when rendering errors
+2 -1
View File
@@ -48,6 +48,7 @@ func panicHandler(c *models.ReqContext) {
func recoveryScenario(t *testing.T, desc string, url string, fn scenarioFunc) {
t.Run(desc, func(t *testing.T) {
cfg := setting.NewCfg()
cfg.IsFeatureToggleEnabled = func(key string) bool { return true }
cfg.ErrTemplateName = "error-template"
sc := &scenarioContext{
t: t,
@@ -67,7 +68,7 @@ func recoveryScenario(t *testing.T, desc string, url string, fn scenarioFunc) {
sc.userAuthTokenService = auth.NewFakeUserAuthTokenService()
sc.remoteCacheService = remotecache.NewFakeStore(t)
contextHandler := getContextHandler(t, nil, nil, nil, nil, nil)
contextHandler := getContextHandler(t, cfg, nil, nil, nil, nil)
sc.m.Use(contextHandler.Middleware)
// mock out gc goroutine
sc.m.Use(OrgRedirect(cfg, sc.mockSQLStore))
@@ -22,6 +22,7 @@ import (
"github.com/grafana/grafana/pkg/services/apikey"
"github.com/grafana/grafana/pkg/services/contexthandler/authproxy"
"github.com/grafana/grafana/pkg/services/contexthandler/ctxkey"
"github.com/grafana/grafana/pkg/services/featuremgmt"
"github.com/grafana/grafana/pkg/services/login"
"github.com/grafana/grafana/pkg/services/org"
"github.com/grafana/grafana/pkg/services/rendering"
@@ -172,6 +173,11 @@ func (h *ContextHandler) Middleware(next http.Handler) http.Handler {
}
}
// this can be used by proxies to identify certain users
if h.Cfg.IsFeatureToggleEnabled(featuremgmt.FlagReturnUnameHeader) {
w.Header().Add("grafana-uname", reqContext.Login)
}
next.ServeHTTP(w, r)
})
}
+5
View File
@@ -9,6 +9,11 @@ package featuremgmt
var (
// Register each toggle here
standardFeatureFlags = []FeatureFlag{
{
Name: "returnUnameHeader",
Description: "Return user login as header for authenticated requests",
State: FeatureStateAlpha,
},
{
Name: "trimDefaults",
Description: "Use cue schema to remove values that will be applied automatically",
+4
View File
@@ -7,6 +7,10 @@
package featuremgmt
const (
// FlagReturnUnameHeader
// Return user login as header for authenticated requests
FlagReturnUnameHeader = "returnUnameHeader"
// FlagTrimDefaults
// Use cue schema to remove values that will be applied automatically
FlagTrimDefaults = "trimDefaults"
@@ -0,0 +1,5 @@
{
"allowUnsanitizedSvgUpload": false,
"addDevEnv": true,
"roots": null
}