@Override public ModelAndView resolveException( HttpServletRequest request, HttpServletResponse response, Object object, Exception exception) { if (request.getRequestURI().endsWith(".ajax")) { return ajaxFailure(request, response, exception); } else { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); QueryProblem queryProblem = QueryProblem.NONE; if (exception instanceof EuropeanaQueryException) { queryProblem = ((EuropeanaQueryException) exception).getFetchProblem(); } Boolean debugMode = Boolean.valueOf(debug); String stackTrace = getStackTrace(exception); if (queryProblem == QueryProblem.NONE || queryProblem == QueryProblem.SOLR_UNREACHABLE) { if (!debugMode) { // don't send email in debugMode emailSender .create("exception") .setFrom(fromEmail) .setTo(toEmail) .setSubject(queryProblem.getFragment()) .set("hostName", request.getServerName()) .set("request", ControllerUtil.formatFullRequestUrl(request)) .set("stackTrace", stackTrace) .set("cacheUrl", cacheUrl) .set("portalName", portalName) .set("portalTheme", portalTheme) .set("portalColor", portalColor) .set("portalDisplayName", portalDisplayName) .set("agent", request.getHeader("User-Agent")) .set("referer", request.getHeader("referer")) .send(); } else { log.error(stackTrace); } } String errorMessage = MessageFormat.format("errorMessage={0}", queryProblem.toString()); clickStreamLogger.logCustomUserAction( request, ClickStreamLogger.UserAction.EXCEPTION_CAUGHT, errorMessage); ModelAndView mav = new ModelAndView("exception"); mav.addObject("debug", debugMode); mav.addObject("interfaceLanguage", ControllerUtil.getLocale(request)); mav.addObject("cacheUrl", cacheUrl); mav.addObject("portalName", portalName); mav.addObject("portalTheme", portalTheme); mav.addObject("portalColor", portalColor); mav.addObject("portalDisplayName", portalDisplayName); mav.addObject("queryProblem", queryProblem); mav.addObject("exception", exception); mav.addObject("stackTrace", stackTrace); mav.addObject("includedMacros", includedMacros); return mav; } }
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; String contextPath = req.getContextPath(); if (contextPath.equals("/")) { contextPath = ""; } String path = RequestUtil.getPath(req); if (!processDirectAccess(request, response, chain, path)) { return; } reloadRoutes(); if (path.indexOf('.') < 0) { // If the request pass via reverse proxy, the original path must be gotten from HTTP header. if (!contextSensitive) { path = getOriginalPath(req); } try { Options options = Routes.recognizePath(path); String controller = options.getString("controller"); String action = options.getString("action"); Options params = options.except("controller", "action"); String actionPath = ControllerUtil.fromClassNameToPath(controller); S2Container container = SingletonS2ContainerFactory.getContainer(); if (container.hasComponentDef(actionPath.replace('/', '_').concat("Action"))) { S2ExecuteConfig executeConfig; if (StringUtil.equals(action, "index")) { executeConfig = S2ExecuteConfigUtil.findExecuteConfig("/" + actionPath, req); action = executeConfig.getMethod().getName(); } else { executeConfig = S2ExecuteConfigUtil.findExecuteConfig("/" + actionPath, action); } if (executeConfig != null) { StringBuilder forwardPath = new StringBuilder(256); forwardPath .append("/") .append(actionPath) .append(".do?SAStruts.method=") .append(URLEncoderUtil.encode(action)); for (String key : params.keySet()) { forwardPath .append("&") .append(URLEncoderUtil.encode(key)) .append("=") .append(URLEncoderUtil.encode(params.getString(key))); } logger.debug(String.format("recognize route %s as %s#%s.", path, actionPath, action)); req.getRequestDispatcher(forwardPath.toString()).forward(req, res); return; } } } catch (RoutingException e) { if (!fallThrough) throw e; } } chain.doFilter(request, response); }
/** * Verify. * * @param token the token * @return the result */ public static Result verify(final String token) { Logger.debug("Account verify"); com.feth.play.module.pa.controllers.Authenticate.noCache(response()); final TokenAction ta = tokenIsValid(token, Type.EMAIL_VERIFICATION); if (ta == null) { return badRequest(no_token_or_invalid.render()); } final String email = ta.targetUser.email; // final User verifiedUser = ta.targetUser; // if(session().containsKey("acctType") && StringUtils.equals("event", // session().get("acctType"))) { // verifiedUser.addRoles(SecurityRole.EVENT_ADMIN); // } else { // verifiedUser.addRoles(SecurityRole.PFP_ADMIN); // } User.verify(ta.targetUser); flash( ControllerUtil.FLASH_INFO_KEY, Messages.get("playauthenticate.verify_email.success", email)); if (ControllerUtil.getLocalUser(session()) != null) { return redirect(routes.Application.index()); } else { return redirect(routes.Signup.login()); } }
private ModelAndView ajaxFailure( HttpServletRequest request, HttpServletResponse response, Exception e) { response.setStatus(HttpServletResponse.SC_NOT_FOUND); ModelAndView page = ControllerUtil.createModelAndViewPage("xml/ajax"); page.addObject("success", false); page.addObject("exception", getStackTrace(e)); clickStreamLogger.logUserAction(request, ClickStreamLogger.UserAction.AJAX_ERROR); log.warn("Problem handling AJAX request", e); return page; }
/** * Change password. * * @return the result */ @SubjectPresent public static Result changePassword() { com.feth.play.module.pa.controllers.Authenticate.noCache(response()); final User u = ControllerUtil.getLocalUser(session()); if (!u.emailValidated) { return ok(unverified.render()); } else { return ok(password_change.render(PASSWORD_CHANGE_FORM)); } }
/** * Do change password. * * @return the result */ @SubjectPresent public static Result doChangePassword() { com.feth.play.module.pa.controllers.Authenticate.noCache(response()); final Form<Account.PasswordChange> filledForm = PASSWORD_CHANGE_FORM.bindFromRequest(); if (filledForm.hasErrors()) { // User did not select whether to link or not link return badRequest(password_change.render(filledForm)); } else { final User user = ControllerUtil.getLocalUser(session()); final String newPassword = filledForm.get().password; user.changePassword(new EmailAuthUser(newPassword), true); flash( ControllerUtil.FLASH_INFO_KEY, Messages.get("playauthenticate.change_password.success")); return redirect(routes.Application.profile()); } }
/** * Verify email. * * @return the result */ @SubjectPresent public static Result verifyEmail() { com.feth.play.module.pa.controllers.Authenticate.noCache(response()); final User user = ControllerUtil.getLocalUser(session()); if (user.emailValidated) { // E-Mail has been validated already flash( ControllerUtil.FLASH_INFO_KEY, Messages.get("playauthenticate.verify_email.error.already_validated")); } else if ((user.email != null) && !user.email.trim().isEmpty()) { flash( ControllerUtil.FLASH_INFO_KEY, Messages.get("playauthenticate.verify_email.message.instructions_sent", user.email)); EmailAuthProvider.getProvider().sendVerifyEmailMailingAfterSignup(user, ctx()); } else { flash( ControllerUtil.FLASH_INFO_KEY, Messages.get("playauthenticate.verify_email.error.set_email_first", user.email)); } return redirect(routes.Application.profile()); }
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException, EuropeanaQueryException { Language oldLocale = ControllerUtil.getLocale(request); String newLocale = request.getParameter(this.paramName); if (newLocale != null) { if (newLocale.contains("*")) { throw new EuropeanaQueryException(QueryProblem.UNABLE_TO_CHANGE_LANGUAGE.toString()); } LocaleResolver localeResolver = RequestContextUtils.getLocaleResolver(request); if (localeResolver == null) { throw new IllegalStateException( "No LocaleResolver found: not in a DispatcherServlet request?"); } LocaleEditor localeEditor = new LocaleEditor(); localeEditor.setAsText(newLocale); localeResolver.setLocale(request, response, (Locale) localeEditor.getValue()); clickStreamLogger.logLanguageChange( request, oldLocale, ClickStreamLogger.UserAction.LANGUAGE_CHANGE); } // Proceed in any case. return true; }