From ade9c8dc3cc75da09642cbb259d3dd4efeb41a6b Mon Sep 17 00:00:00 2001
From: 6543 <6543@obermui.de>
Date: Tue, 13 Oct 2020 02:41:49 +0200
Subject: [PATCH] [API] If User is Admin, show 500 error message on PROD mode
 too (#13115)

* API: show admin 500 error message on PROD mode too

* a nit

* dont miss InternalServerError

Co-authored-by: techknowlogick <techknowlogick@gitea.io>
---
 models/migrations/migrations.go | 4 ++--
 modules/context/api.go          | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/models/migrations/migrations.go b/models/migrations/migrations.go
index 999fe622d7..4e12181b15 100644
--- a/models/migrations/migrations.go
+++ b/models/migrations/migrations.go
@@ -320,9 +320,9 @@ Please try upgrading to a lower version first (suggested v1.6.4), then upgrade t
 		return nil
 	}
 
-	// Downgraded Gitea not supported
+	// Downgrading Gitea's database version not supported
 	if int(v-minDBVersion) > len(migrations) {
-		msg := fmt.Sprintf("Downgrading Gitea from '%d' to '%d' is not supported and may result in loss of data integrity.\nIf you really know what you're doing, execute `UPDATE version SET version=%d WHERE id=1;`\n",
+		msg := fmt.Sprintf("Downgrading database version from '%d' to '%d' is not supported and may result in loss of data integrity.\nIf you really know what you're doing, execute `UPDATE version SET version=%d WHERE id=1;`\n",
 			v, minDBVersion+len(migrations), minDBVersion+len(migrations))
 		fmt.Fprint(os.Stderr, msg)
 		log.Fatal(msg)
diff --git a/modules/context/api.go b/modules/context/api.go
index fdc000e4a5..772e1f8f50 100644
--- a/modules/context/api.go
+++ b/modules/context/api.go
@@ -82,7 +82,7 @@ func (ctx *APIContext) Error(status int, title string, obj interface{}) {
 	if status == http.StatusInternalServerError {
 		log.ErrorWithSkip(1, "%s: %s", title, message)
 
-		if macaron.Env == macaron.PROD {
+		if macaron.Env == macaron.PROD && !(ctx.User != nil && ctx.User.IsAdmin) {
 			message = ""
 		}
 	}
@@ -99,7 +99,7 @@ func (ctx *APIContext) InternalServerError(err error) {
 	log.ErrorWithSkip(1, "InternalServerError: %v", err)
 
 	var message string
-	if macaron.Env != macaron.PROD {
+	if macaron.Env != macaron.PROD || (ctx.User != nil && ctx.User.IsAdmin) {
 		message = err.Error()
 	}