From ffbf789672692a502b507b59fb82a3ca7ce772a4 Mon Sep 17 00:00:00 2001
From: zeripath <art27@cantab.net>
Date: Thu, 28 Nov 2019 17:35:41 +0000
Subject: [PATCH] Properly fix displaying virtual session provider in admin
 panel (#9137)

* Properly fix #7127

Although #7300 properly shadows the password from the virtual session
provider, the template displaying the provider config still presumed
that the config was JSON.

This PR updates the template and properly hides the Virtual Session
provider.

Fixes #7127

* update per @silverwind's suggestion
---
 routers/admin/admin.go      | 14 +++++++-------
 templates/admin/config.tmpl |  2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/routers/admin/admin.go b/routers/admin/admin.go
index 4c4738ae8c0ce..45bdbfe7f2d4c 100644
--- a/routers/admin/admin.go
+++ b/routers/admin/admin.go
@@ -262,13 +262,7 @@ func shadowPassword(provider, cfgItem string) string {
 		return shadowURL(provider, cfgItem)
 		// postgres://pqgotest:password@localhost/pqgotest?sslmode=verify-full
 		// Notice: use shadowURL
-	case "VirtualSession":
-		var realSession session.Options
-		if err := json.Unmarshal([]byte(cfgItem), &realSession); err == nil {
-			return shadowPassword(realSession.Provider, realSession.ProviderConfig)
-		}
 	}
-
 	return cfgItem
 }
 
@@ -314,8 +308,14 @@ func Config(ctx *context.Context) {
 	ctx.Data["CacheItemTTL"] = setting.CacheService.TTL
 
 	sessionCfg := setting.SessionConfig
+	if sessionCfg.Provider == "VirtualSession" {
+		var realSession session.Options
+		if err := json.Unmarshal([]byte(sessionCfg.ProviderConfig), &realSession); err != nil {
+			log.Error("Unable to unmarshall session config for virtualed provider config: %s\nError: %v", sessionCfg.ProviderConfig, err)
+		}
+		sessionCfg = realSession
+	}
 	sessionCfg.ProviderConfig = shadowPassword(sessionCfg.Provider, sessionCfg.ProviderConfig)
-
 	ctx.Data["SessionConfig"] = sessionCfg
 
 	ctx.Data["DisableGravatar"] = setting.DisableGravatar
diff --git a/templates/admin/config.tmpl b/templates/admin/config.tmpl
index 79eec31dfdd6a..c2793ece9dc12 100644
--- a/templates/admin/config.tmpl
+++ b/templates/admin/config.tmpl
@@ -270,7 +270,7 @@
 				<dt>{{.i18n.Tr "admin.config.session_provider"}}</dt>
 				<dd>{{.SessionConfig.Provider}}</dd>
 				<dt>{{.i18n.Tr "admin.config.provider_config"}}</dt>
-				<dd><pre>{{if .SessionConfig.ProviderConfig}}{{.SessionConfig.ProviderConfig  | JsonPrettyPrint}}{{else}}-{{end}}</pre></dd>
+				<dd><code>{{if .SessionConfig.ProviderConfig}}{{.SessionConfig.ProviderConfig}}{{else}}-{{end}}</code></dd>
 				<dt>{{.i18n.Tr "admin.config.cookie_name"}}</dt>
 				<dd>{{.SessionConfig.CookieName}}</dd>
 				<dt>{{.i18n.Tr "admin.config.gc_interval_time"}}</dt>