Skip to content
Snippets Groups Projects
Commit fe2c349a authored by User expired's avatar User expired
Browse files

openolat#137: using the new identitykey parameter for error feedback handling

parent a2134e1e
No related branches found
No related tags found
No related merge requests found
...@@ -82,10 +82,16 @@ public class ErrorFeedbackMailer implements Dispatcher { ...@@ -82,10 +82,16 @@ public class ErrorFeedbackMailer implements Dispatcher {
public void sendMail(HttpServletRequest request) { public void sendMail(HttpServletRequest request) {
String feedback = request.getParameter("textarea"); String feedback = request.getParameter("textarea");
String errorNr = request.getParameter("fx_errnum"); String errorNr = request.getParameter("fx_errnum");
String username = request.getParameter("username"); String userIdentityKey = request.getParameter("useridentitykey");
try { try {
if(StringHelper.containsNonWhitespace(username)) { if(StringHelper.containsNonWhitespace(feedback)) {
Identity ident = securityManager.findIdentityByName(username); 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); Collection<String> logFileEntries = LogFileParser.getErrorToday(errorNr, false);
StringBuilder out = new StringBuilder(2048); StringBuilder out = new StringBuilder(2048);
out.append(feedback) out.append(feedback)
...@@ -97,12 +103,16 @@ public class ErrorFeedbackMailer implements Dispatcher { ...@@ -97,12 +103,16 @@ public class ErrorFeedbackMailer implements Dispatcher {
} }
MailBundle bundle = new MailBundle(); 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.setTo(WebappHelper.getMailConfig("mailError"));
bundle.setContent("Feedback from Error Nr.: " + errorNr, "<pre>" + StringEscapeUtils.escapeHtml(out.toString()) + "</pre>"); bundle.setContent("Feedback from Error Nr.: " + errorNr, "<pre>" + StringEscapeUtils.escapeHtml(out.toString()) + "</pre>");
mailManager.sendExternMessage(bundle, null, false); mailManager.sendExternMessage(bundle, null, false);
} else { } else {
log.error("Try to send a feedback without identity"); log.error("Try to send a feedback without text");
} }
} catch (Exception e) { } catch (Exception e) {
handleException(request, e); handleException(request, e);
...@@ -111,9 +121,9 @@ public class ErrorFeedbackMailer implements Dispatcher { ...@@ -111,9 +121,9 @@ public class ErrorFeedbackMailer implements Dispatcher {
private void handleException(HttpServletRequest request, Exception e) { private void handleException(HttpServletRequest request, Exception e) {
String feedback = request.getParameter("textarea"); 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: " 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 @Override
......
...@@ -195,7 +195,7 @@ public class ExceptionWindowController extends DefaultChiefController { ...@@ -195,7 +195,7 @@ public class ExceptionWindowController extends DefaultChiefController {
msg.contextPut("stacktrace", OLATRuntimeException.throwableToHtml(th)); msg.contextPut("stacktrace", OLATRuntimeException.throwableToHtml(th));
Identity curIdent = ureq.getIdentity(); 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("allowBackButton", Boolean.valueOf(allowBackButton));
msg.contextPut("detailedmessage", detailedmessage); msg.contextPut("detailedmessage", detailedmessage);
// Cluster request reference number // Cluster request reference number
...@@ -241,15 +241,13 @@ public class ExceptionWindowController extends DefaultChiefController { ...@@ -241,15 +241,13 @@ public class ExceptionWindowController extends DefaultChiefController {
// send email to support address // send email to support address
try { try {
// if null, user may crashed before getting a valid session, try with MailBundle bundle = new MailBundle();
// guest user instead // if null, user may crashed before getting a valid session
if (curIdent == null) { if (curIdent == null) {
BaseSecurity im = CoreSpringFactory.getImpl(BaseSecurity.class); bundle.setFrom(WebappHelper.getMailConfig("mailError"));
curIdent = im.findIdentityByName("guest"); } else {
bundle.setFromId(curIdent);
} }
MailBundle bundle = new MailBundle();
bundle.setFromId(curIdent);
bundle.setTo(WebappHelper.getMailConfig("mailError")); bundle.setTo(WebappHelper.getMailConfig("mailError"));
bundle.setContent( bundle.setContent(
"**RedScreen** Nr.: " + Settings.getNodeInfo() + "-E" + refNum, "**RedScreen** Nr.: " + Settings.getNodeInfo() + "-E" + refNum,
...@@ -257,8 +255,8 @@ public class ExceptionWindowController extends DefaultChiefController { ...@@ -257,8 +255,8 @@ public class ExceptionWindowController extends DefaultChiefController {
StringEscapeUtils.escapeHtml( StringEscapeUtils.escapeHtml(
"**RedScreen** " + o3e.getLogMsg() + "\n" + "**RedScreen** " + o3e.getLogMsg() + "\n" +
formatter.formatDateAndTime(new Date()) + "\n" + formatter.formatDateAndTime(new Date()) + "\n" +
"Username: " + curIdent.getName() + "\n" + "Username: " + (curIdent == null ? "null" : curIdent.getName()) + "\n" +
"Stacktrace:\n" + "Stacktrace:\n" +
OLATRuntimeException.throwableToHtml(th).replaceAll("<br />", "\n") + "\n\n" + OLATRuntimeException.throwableToHtml(th).replaceAll("<br />", "\n") + "\n\n" +
"ListenerInfo\n" + "ListenerInfo\n" +
componentListenerInfo + "\n" + componentListenerInfo + "\n" +
......
...@@ -145,7 +145,7 @@ $r.renderHeaderIncludes() ...@@ -145,7 +145,7 @@ $r.renderHeaderIncludes()
</a> </a>
</div> </div>
<input type="hidden" name="username" value="$username" /> <input type="hidden" name="useridentitykey" value="$userIdentityKey" />
<input type="hidden" name="fx_errnum" value="${errnum}" /> <input type="hidden" name="fx_errnum" value="${errnum}" />
<textarea rows="15" name="textarea" class="form-control"> <textarea rows="15" name="textarea" class="form-control">
$r.translate('error.errnum') ${errnum} $r.translate('error.errnum') ${errnum}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment