Sfoglia il codice sorgente

fix: error handling now displays page correctly, fixes #10777

Torkel Ödegaard 7 anni fa
parent
commit
0e61a670bb

+ 2 - 2
pkg/api/login_oauth.go

@@ -40,14 +40,14 @@ func GenStateString() string {
 
 func OAuthLogin(ctx *middleware.Context) {
 	if setting.OAuthService == nil {
-		ctx.Handle(404, "login.OAuthLogin(oauth service not enabled)", nil)
+		ctx.Handle(404, "OAuth not enabled", nil)
 		return
 	}
 
 	name := ctx.Params(":name")
 	connect, ok := social.SocialMap[name]
 	if !ok {
-		ctx.Handle(404, "login.OAuthLogin(social login not enabled)", errors.New(name))
+		ctx.Handle(404, fmt.Sprintf("No OAuth with name %s configured", name), nil)
 		return
 	}
 

+ 3 - 1
pkg/middleware/middleware.go

@@ -206,7 +206,9 @@ func (ctx *Context) Handle(status int, title string, err error) {
 
 	ctx.Data["Title"] = title
 	ctx.Data["AppSubUrl"] = setting.AppSubUrl
-	ctx.HTML(status, strconv.Itoa(status))
+	ctx.Data["Theme"] = "dark"
+
+	ctx.HTML(status, "error")
 }
 
 func (ctx *Context) JsonOK(message string) {

+ 1 - 1
pkg/middleware/recovery.go

@@ -137,7 +137,7 @@ func Recovery() macaron.Handler {
 
 					c.JSON(500, resp)
 				} else {
-					c.HTML(500, "500")
+					c.HTML(500, "error")
 				}
 			}
 		}()

+ 1 - 1
public/app/features/plugins/partials/ds_list.html

@@ -52,7 +52,7 @@
 		<empty-list-cta model="{
 			title: 'There are no data sources defined yet',
 			buttonIcon: 'gicon gicon-add-datasources',
-			buttonLink: '/datasources/new',
+			buttonLink: 'datasources/new',
 			buttonTitle: 'Add data source',
 			proTip: 'You can also define data sources through configuration files.',
 			proTipLink: 'http://docs.grafana.org/administration/provisioning/#datasources?utm_source=grafana_ds_list',

+ 0 - 28
public/views/407.html

@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width">
-
-    <title>Grafana</title>
-    <base href="[[.AppSubUrl]]/" />
-
-    <link rel="stylesheet" href="public/build/grafana.dark.min.css" title="Dark">
-    <link rel="icon" type="image/png" href="public/img/fav32.png">
-  </head>
-
-	<body>
-		<div class="gf-box" style="margin: 200px auto 0 auto; width: 500px;">
-			<div class="gf-box-header">
-				<span class="gf-box-title">
-					Proxy authentication required
-				</span>
-			</div>
-
-			<div class="gf-box-body">
-				<h4>Proxy authenticaion required</h4>
-			</div>
-		</div>
-  </body>
-</html>

+ 0 - 39
public/views/500.html

@@ -1,39 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
-    <meta name="viewport" content="width=device-width">
-    <title>Grafana - Error</title>
-
-    <base href="[[.AppSubUrl]]/" />
-
-    <link href='public/css/fonts.min.css' rel='stylesheet' type='text/css'>
-		<link rel="stylesheet" href="public/build/grafana.dark.min.css">
-    <link rel="icon" type="image/png" href="public/img/fav32.png">
-  </head>
-
-  <body>
-    <div class="page-container">
-      <div class="page-header">
-        <h1>Server side error :(</h1>
-      </div>
-      <div class="panel-container" style="padding: 2rem">
-        <div class="alert">
-          <div class="alert-icon"><i class="fa fa-exclamation-triangle"></i></div>
-					<div class="alert-body">
-						<div class="alert-title">[[.Title]]</div>
-						<div class="alert-text">
-              [[if .ErrorMsg]]
-                <pre>[[.ErrorMsg]]</pre>
-              [[end]]
-            </div>
-					</div>
-        </div>
-        <div style="padding: 2rem 0 0">
-          <p>Check the Grafana server logs for the detailed error message.</p>
-        </div>
-      </div>
-    </div>
-  </body>
-</html>

+ 57 - 0
public/views/error.html

@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width">
+    <meta name="theme-color" content="#000">
+
+    <title>Grafana</title>
+
+    <base href="[[.AppSubUrl]]/" />
+
+    <link rel="stylesheet" href="public/build/grafana.[[ .Theme ]].css?v[[ .BuildVersion ]]">
+
+    <link rel="icon" type="image/png" href="public/img/fav32.png">
+    <link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28">
+
+  </head>
+
+  <body class="theme-[[ .Theme ]]">
+    <div class="main-view">
+      <div class="page-container">
+        <div class="page-header">
+          <div class="page-header__inner">
+            <span class="page-header__logo">
+              <i class="page-header__icon fa fa-frown-o"></i>
+            </span>
+            <div class="page-header__info-block">
+              <h1 class="page-header__title">
+                <a class="text-link" href="login">Grafana</a><span> / Server Error</span><span></span>
+              </h1>
+              <div class="page-header__sub-title">Sadly something went wrong</div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="page-container page-body ng-scope" style="padding: 2rem">
+        <div class="alert">
+          <div class="alert-icon"><i class="fa fa-exclamation-triangle"></i></div>
+          <div class="alert-body">
+            <div class="alert-title">[[.Title]]</div>
+          </div>
+        </div>
+        <br />
+        [[if .ErrorMsg]]
+          <h4 class="page-heading">Error details</h4>
+          <div class="alert-text">
+            <pre>[[.ErrorMsg]]</pre>
+          </div>
+        [[end]]
+        <div style="padding: 2rem 0 0">
+          <p>Check the Grafana server logs for the detailed error message.</p>
+        </div>
+      </div>
+    </div>
+  </body>
+</html>