From fe2c349a3b3e99ec2e401c87e25b7626f73be8fc Mon Sep 17 00:00:00 2001 From: Daniel Haag <daniel.haag@uibk.ac.at> Date: Wed, 20 Nov 2019 14:59:30 +0100 Subject: [PATCH] openolat#137: using the new identitykey parameter for error feedback handling --- .../core/dispatcher/ErrorFeedbackMailer.java | 24 +++++++++++++------ .../exception/ExceptionWindowController.java | 18 +++++++------- .../exception/_content/exception_page.html | 2 +- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java b/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java index b608f5b76f6..5db4605c398 100644 --- a/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java +++ b/src/main/java/org/olat/core/dispatcher/ErrorFeedbackMailer.java @@ -82,10 +82,16 @@ public class ErrorFeedbackMailer implements Dispatcher { public void sendMail(HttpServletRequest request) { String feedback = request.getParameter("textarea"); String errorNr = request.getParameter("fx_errnum"); - String username = request.getParameter("username"); + String userIdentityKey = request.getParameter("useridentitykey"); try { - if(StringHelper.containsNonWhitespace(username)) { - Identity ident = securityManager.findIdentityByName(username); + if(StringHelper.containsNonWhitespace(feedback)) { + Identity ident = securityManager.loadIdentityByKey(Long.valueOf(userIdentityKey),true); + String username; + if (ident == null) { + username = "n/a"; + } else { + username = ident.getName(); + } Collection<String> logFileEntries = LogFileParser.getErrorToday(errorNr, false); StringBuilder out = new StringBuilder(2048); out.append(feedback) @@ -97,12 +103,16 @@ public class ErrorFeedbackMailer implements Dispatcher { } MailBundle bundle = new MailBundle(); - bundle.setFromId(ident); + if (ident == null) { + bundle.setFrom(WebappHelper.getMailConfig("mailError")); + } else { + bundle.setFromId(ident); + } bundle.setTo(WebappHelper.getMailConfig("mailError")); bundle.setContent("Feedback from Error Nr.: " + errorNr, "<pre>" + StringEscapeUtils.escapeHtml(out.toString()) + "</pre>"); mailManager.sendExternMessage(bundle, null, false); } else { - log.error("Try to send a feedback without identity"); + log.error("Try to send a feedback without text"); } } catch (Exception e) { handleException(request, e); @@ -111,9 +121,9 @@ public class ErrorFeedbackMailer implements Dispatcher { private void handleException(HttpServletRequest request, Exception e) { String feedback = request.getParameter("textarea"); - String username = request.getParameter("username"); + String userIdentityKey = request.getParameter("useridentitykey"); log.error("Error sending error feedback mail to OpenOLAT error support (" + WebappHelper.getMailConfig("mailError") + ") from: " - + username + " with content: " + feedback, e); + + userIdentityKey + " with content: " + feedback, e); } @Override diff --git a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java index 8b54e1de38f..41f9ac9eb07 100644 --- a/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java +++ b/src/main/java/org/olat/core/gui/exception/ExceptionWindowController.java @@ -195,7 +195,7 @@ public class ExceptionWindowController extends DefaultChiefController { msg.contextPut("stacktrace", OLATRuntimeException.throwableToHtml(th)); Identity curIdent = ureq.getIdentity(); - msg.contextPut("username", curIdent == null? "n/a" : curIdent.getKey()); + msg.contextPut("userIdentityKey", curIdent == null? "n/a" : curIdent.getKey()); msg.contextPut("allowBackButton", Boolean.valueOf(allowBackButton)); msg.contextPut("detailedmessage", detailedmessage); // Cluster request reference number @@ -241,15 +241,13 @@ public class ExceptionWindowController extends DefaultChiefController { // send email to support address try { - // if null, user may crashed before getting a valid session, try with - // guest user instead + MailBundle bundle = new MailBundle(); + // if null, user may crashed before getting a valid session if (curIdent == null) { - BaseSecurity im = CoreSpringFactory.getImpl(BaseSecurity.class); - curIdent = im.findIdentityByName("guest"); + bundle.setFrom(WebappHelper.getMailConfig("mailError")); + } else { + bundle.setFromId(curIdent); } - - MailBundle bundle = new MailBundle(); - bundle.setFromId(curIdent); bundle.setTo(WebappHelper.getMailConfig("mailError")); bundle.setContent( "**RedScreen** Nr.: " + Settings.getNodeInfo() + "-E" + refNum, @@ -257,8 +255,8 @@ public class ExceptionWindowController extends DefaultChiefController { StringEscapeUtils.escapeHtml( "**RedScreen** " + o3e.getLogMsg() + "\n" + formatter.formatDateAndTime(new Date()) + "\n" + - "Username: " + curIdent.getName() + "\n" + - "Stacktrace:\n" + + "Username: " + (curIdent == null ? "null" : curIdent.getName()) + "\n" + + "Stacktrace:\n" + OLATRuntimeException.throwableToHtml(th).replaceAll("<br />", "\n") + "\n\n" + "ListenerInfo\n" + componentListenerInfo + "\n" + diff --git a/src/main/java/org/olat/core/gui/exception/_content/exception_page.html b/src/main/java/org/olat/core/gui/exception/_content/exception_page.html index fcefb2c6828..837757d74a5 100644 --- a/src/main/java/org/olat/core/gui/exception/_content/exception_page.html +++ b/src/main/java/org/olat/core/gui/exception/_content/exception_page.html @@ -145,7 +145,7 @@ $r.renderHeaderIncludes() </a> </div> - <input type="hidden" name="username" value="$username" /> + <input type="hidden" name="useridentitykey" value="$userIdentityKey" /> <input type="hidden" name="fx_errnum" value="${errnum}" /> <textarea rows="15" name="textarea" class="form-control"> $r.translate('error.errnum') ${errnum} -- GitLab