@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); }
/** * проверка для пользователя с 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); }
/** * проверка для заблокированного пользователя с < 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); }