diff --git a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala
index 7841721..2e54423 100644
--- a/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala
+++ b/src/main/scala/gitbucket/core/controller/SystemSettingsController.scala
@@ -62,8 +62,9 @@
"mailAttribute" -> trim(label("Mail address attribute", optional(text()))),
"tls" -> trim(label("Enable TLS", optional(boolean()))),
"ssl" -> trim(label("Enable SSL", optional(boolean()))),
- "keystore" -> trim(label("Keystore", optional(text())))
- )(Ldap.apply))
+ "keystore" -> trim(label("Keystore", optional(text()))),
+ )(Ldap.apply)),
+ "debug" -> trim(label("Debug", boolean()))
)(SystemSettings.apply).verifying { settings =>
Vector(
if(settings.ssh && settings.baseUrl.isEmpty){
diff --git a/src/main/scala/gitbucket/core/service/SystemSettingsService.scala b/src/main/scala/gitbucket/core/service/SystemSettingsService.scala
index 248d122..7734f3e 100644
--- a/src/main/scala/gitbucket/core/service/SystemSettingsService.scala
+++ b/src/main/scala/gitbucket/core/service/SystemSettingsService.scala
@@ -54,6 +54,7 @@
ldap.keystore.foreach(x => props.setProperty(LdapKeystore, x))
}
}
+ props.setProperty(Debug, settings.debug.toString)
using(new java.io.FileOutputStream(GitBucketConf)){ out =>
props.store(out, null)
}
@@ -111,7 +112,8 @@
getOptionValue(props, LdapKeystore, None)))
} else {
None
- }
+ },
+ getValue(props, Debug, false)
)
}
}
@@ -136,7 +138,8 @@
useSMTP: Boolean,
smtp: Option[Smtp],
ldapAuthentication: Boolean,
- ldap: Option[Ldap]){
+ ldap: Option[Ldap],
+ debug: Boolean){
def baseUrl(request: HttpServletRequest): String = baseUrl.fold(request.baseUrl)(_.stripSuffix("/"))
def sshAddress:Option[SshAddress] =
@@ -219,6 +222,7 @@
private val LdapTls = "ldap.tls"
private val LdapSsl = "ldap.ssl"
private val LdapKeystore = "ldap.keystore"
+ private val Debug = "debug"
private def getValue[A: ClassTag](props: java.util.Properties, key: String, default: A): A = {
getSystemProperty(key).getOrElse(getEnvironmentVariable(key).getOrElse {
diff --git a/src/main/twirl/gitbucket/core/error.scala.html b/src/main/twirl/gitbucket/core/error.scala.html
index 211073c..2671797 100644
--- a/src/main/twirl/gitbucket/core/error.scala.html
+++ b/src/main/twirl/gitbucket/core/error.scala.html
@@ -3,15 +3,19 @@
@title
- @e.map { ex =>
-
@ex.getMessage
-
-
- @ex.getStackTrace.map{ st =>
- @st |
- }
-
-
+ @if(context.loginAccount.map{_.isAdmin}.getOrElse(false) || context.settings.debug){
+ @e.map { ex =>
+
@ex.getMessage
+
+
+ @ex.getStackTrace.map{ st =>
+ @st |
+ }
+
+
+ }
+ } else {
+
Please contact your administrator.
}
diff --git a/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala b/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala
index 27d8c7d..c78b205 100644
--- a/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala
+++ b/src/test/scala/gitbucket/core/view/AvatarImageProviderSpec.scala
@@ -118,7 +118,8 @@
useSMTP = false,
smtp = None,
ldapAuthentication = false,
- ldap = None)
+ ldap = None,
+ debug = false)
/**
* Adapter to test AvatarImageProviderImpl.