if (currentUser!=null && currentUser.isModerator()) {
return;
}
if (message.isExpired() && showDeleted) {
throw new MessageNotFoundException(message.getId(), "нельзя посмотреть удаленные комментарии в устаревших темах");
}
boolean unauthorized = currentUser == null || currentUser.isAnonymous();
boolean topicAuthor = currentUser!=null && currentUser.getId() == message.getUid();
if (message.isDeleted()) {
if (message.isExpired()) {
throw new MessageNotFoundException(message.getId(), "нельзя посмотреть устаревшие удаленные сообщения");
}
if (unauthorized) {
throw new MessageNotFoundException(message.getId(), "Сообщение удалено");
}
if (topicAuthor) {
return;
}
if (currentUser.getScore() < VIEW_DELETED_SCORE) {
throw new MessageNotFoundException(message.getId(), "Сообщение удалено");
}
}
if (message.isDraft()) {
if (message.isExpired()) {
throw new MessageNotFoundException(message.getId(), "Черновик устарел");
}
if (!topicAuthor) {
throw new MessageNotFoundException(message.getId(), "Нельзя посмотреть чужой черновик");
}
}
if (group.getCommentsRestriction() == -1 && unauthorized) {
throw new AccessViolationException("Это сообщение нельзя посмотреть");