Exemple #1
0
  @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());
   }
 }
Exemple #4
0
 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;
 }