@Override
      public void step1() {
        txt = content.getValue().toString();
        txt = txt.trim();
        if (txt.length() < 5) {
          Notification.show(
              "Card not played.",
              "Your message is too short to be useful.",
              Notification.Type.ERROR_MESSAGE);
          doNotAdvanceSteps(); // come into step1 again next time
          return;
        }
        if (txt.length() > 140) {
          Notification.show(
              "Card not played.", "Only 140 characters please.", Notification.Type.ERROR_MESSAGE);
          doNotAdvanceSteps(); // come into step1 again next time
          return;
        }

        // Admins get to add cards under other names
        author = Mmowgli2UI.getGlobals().getUserTL();
        if (author.isAdministrator()) adminSwitchAuthorsTL(event.getButton(), this);
        else run(); // does not need to suspend, so "continues" and executes step2
        // in the same clicklistener thread
      }
  /**
   * Контроллер блокирования и полного удаления комментариев и топиков пользователя
   *
   * @param request http запрос
   * @param user блокируемый пользователь
   * @return возвращаемся в профиль
   * @throws Exception обычно если текущий пользователь не модератор или пользователя нельзя
   *     блокировать
   */
  @RequestMapping(
      value = "/usermod.jsp",
      method = RequestMethod.POST,
      params = "action=block-n-delete-comments")
  public ModelAndView blockAndMassiveDeleteCommentUser(
      HttpServletRequest request,
      @RequestParam("id") User user,
      @RequestParam(value = "reason", required = false) String reason)
      throws Exception {
    User moderator = getModerator(request);
    if (!user.isBlockable() && !moderator.isAdministrator()) {
      throw new AccessViolationException(
          "Пользователя " + user.getNick() + " нельзя заблокировать");
    }
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("message", "Удалено");
    DeleteCommentResult deleteCommentResult =
        commentService.deleteAllCommentsAndBlock(user, moderator, reason);

    logger.info("User " + user.getNick() + " blocked by " + moderator.getNick());

    params.put("bigMessage", deleteCommentResult.getDeletedCommentIds()); // TODO

    for (int topicId : deleteCommentResult.getDeletedTopicIds()) {
      searchQueueSender.updateMessage(topicId, true);
    }
    searchQueueSender.updateComment(deleteCommentResult.getDeletedCommentIds());

    return new ModelAndView("action-done", params);
  }
Beispiel #3
0
  /**
   * проверка для пользователя с 1-ой звездами
   *
   * @throws Exception хм
   */
  @Test
  public void user1starTest() throws Exception {
    ResultSet resultSet = Users.getUser1star();
    User user = new User(resultSet);

    Assert.assertEquals(resultSet.getInt("id"), user.getId());
    Assert.assertEquals(resultSet.getString("nick"), user.getNick());
    Assert.assertTrue(user.matchPassword("passwd"));
    try {
      user.checkAnonymous();
    } catch (AccessViolationException e) {
      Assert.fail();
    }
    try {
      user.checkBlocked();
    } catch (AccessViolationException e) {
      Assert.fail();
    }
    try {
      user.checkCommit();
      Assert.fail();
    } catch (AccessViolationException e) {
      Assert.assertEquals(
          "Commit access denied for user "
              + resultSet.getString("nick")
              + " ("
              + resultSet.getInt("id")
              + ") ",
          e.getMessage());
    }
    Assert.assertFalse(user.isBlocked());
    try {
      user.checkDelete();
      Assert.fail();
    } catch (AccessViolationException e) {
      Assert.assertEquals(
          "Delete access denied for user "
              + resultSet.getString("nick")
              + " ("
              + resultSet.getInt("id")
              + ") ",
          e.getMessage());
    }
    Assert.assertFalse(user.canModerate());
    Assert.assertFalse(user.isAdministrator());
    Assert.assertFalse(user.canCorrect());
    Assert.assertFalse(user.isAnonymous());
    Assert.assertEquals(resultSet.getInt("score"), user.getScore());
    Assert.assertEquals(
        "<img src=\"/img/normal-star.gif\" width=9 height=9 alt=\"*\">", user.getStatus());
    Assert.assertTrue(user.isBlockable());
    Assert.assertTrue(user.isActivated());
    Assert.assertFalse(user.isAnonymousScore());
    Assert.assertEquals(resultSet.getBoolean("corrector"), user.isCorrector());
    Assert.assertEquals(resultSet.getString("email"), user.getEmail());
    Assert.assertFalse(user.hasGravatar());
    Assert.assertEquals(resultSet.getString("name"), user.getName());
  }
  /**
   * Контроллер разблокировки пользователя
   *
   * @param request http запрос
   * @param user разблокируемый пользователь
   * @return возвращаемся в профиль
   * @throws Exception обычно если текущий пользователь не модератор или пользователя нельзя
   *     разблокировать
   */
  @RequestMapping(value = "/usermod.jsp", method = RequestMethod.POST, params = "action=unblock")
  public ModelAndView unblockUser(HttpServletRequest request, @RequestParam("id") User user)
      throws Exception {

    User moderator = getModerator(request);
    if (!user.isBlockable() && !moderator.isAdministrator()) {
      throw new AccessViolationException(
          "Пользователя " + user.getNick() + " нельзя разблокировать");
    }
    userDao.unblock(user);
    logger.info("User " + user.getNick() + " unblocked by " + moderator.getNick());
    return redirectToProfile(user);
  }
Beispiel #5
0
  /**
   * проверка для заблокированного пользователя с < 50 score
   *
   * @throws Exception хм
   */
  @Test
  public void userBlockedTest() throws Exception {
    ResultSet resultSet = Users.getUser45ScoreBlocked();
    User user = new User(resultSet);

    Assert.assertEquals(resultSet.getInt("id"), user.getId());
    Assert.assertEquals(resultSet.getString("nick"), user.getNick());
    Assert.assertTrue(user.matchPassword("passwd"));
    try {
      user.checkAnonymous();
      Assert.fail();
    } catch (AccessViolationException e) {
      Assert.assertEquals("Anonymous user", e.getMessage());
    }
    try {
      user.checkBlocked();
      Assert.fail();
    } catch (AccessViolationException e) {
      Assert.assertEquals("Пользователь заблокирован", e.getMessage());
    }
    try {
      user.checkCommit();
      Assert.fail();
    } catch (AccessViolationException e) {
      Assert.assertEquals("Commit access denied for anonymous user", e.getMessage());
    }
    Assert.assertTrue(user.isBlocked());
    try {
      user.checkDelete();
      Assert.fail();
    } catch (AccessViolationException e) {
      Assert.assertEquals("Delete access denied for anonymous user", e.getMessage());
    }
    Assert.assertFalse(user.canModerate());
    Assert.assertFalse(user.isAdministrator());
    Assert.assertFalse(user.canCorrect());
    Assert.assertFalse(
        user.isAnonymous()); // TODO для заблокированного ананомного пользователя False :-\
    Assert.assertEquals(resultSet.getInt("score"), user.getScore());
    Assert.assertEquals("анонимный", user.getStatus());
    Assert.assertTrue(user.isBlockable());
    Assert.assertTrue(user.isActivated());
    Assert.assertTrue(user.isAnonymousScore());
    Assert.assertEquals(resultSet.getBoolean("corrector"), user.isCorrector());
    Assert.assertEquals(resultSet.getString("email"), user.getEmail());
    Assert.assertFalse(user.hasGravatar());
    Assert.assertEquals(resultSet.getString("name"), user.getName());
  }
  /**
   * Контроллер блокировки пользователя
   *
   * @param request http запрос
   * @param user блокируемый пользователь
   * @param reason причина блокировки
   * @return возвращаемся в профиль
   * @throws Exception обычно если текущий пользователь не модератор или блокируемого пользователя
   *     нельзя блокировать
   */
  @RequestMapping(value = "/usermod.jsp", method = RequestMethod.POST, params = "action=block")
  public ModelAndView blockUser(
      HttpServletRequest request,
      @RequestParam("id") User user,
      @RequestParam(value = "reason", required = false) String reason)
      throws Exception {
    User moderator = getModerator(request);
    if (!user.isBlockable() && !moderator.isAdministrator()) {
      throw new AccessViolationException(
          "Пользователя " + user.getNick() + " нельзя заблокировать");
    }

    if (user.isBlocked()) {
      throw new UserErrorException("Пользователь уже блокирован");
    }

    userDao.blockWithResetPassword(user, moderator, reason);
    logger.info("User " + user.getNick() + " blocked by " + moderator.getNick());
    return redirectToProfile(user);
  }