* 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:
@@ -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{
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user