diff --git a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java index 52e1b02a0..4208c4ea9 100644 --- a/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/BaseCommentServiceImpl.java @@ -16,6 +16,7 @@ import org.springframework.util.CollectionUtils; import run.halo.app.event.comment.CommentNewEvent; import run.halo.app.event.comment.CommentPassEvent; import run.halo.app.event.comment.CommentReplyEvent; +import run.halo.app.exception.BadRequestException; import run.halo.app.model.dto.BaseCommentDTO; import run.halo.app.model.entity.BaseComment; import run.halo.app.model.entity.User; @@ -32,6 +33,7 @@ import run.halo.app.repository.base.BaseCommentRepository; import run.halo.app.security.authentication.Authentication; import run.halo.app.security.context.SecurityContextHolder; import run.halo.app.service.OptionService; +import run.halo.app.service.UserService; import run.halo.app.service.base.AbstractCrudService; import run.halo.app.service.base.BaseCommentService; import run.halo.app.utils.ServiceUtils; @@ -55,14 +57,17 @@ public abstract class BaseCommentServiceImpl extend protected final OptionService optionService; + protected final UserService userService; + protected final ApplicationEventPublisher eventPublisher; public BaseCommentServiceImpl(BaseCommentRepository baseCommentRepository, OptionService optionService, - ApplicationEventPublisher eventPublisher) { + UserService userService, ApplicationEventPublisher eventPublisher) { super(baseCommentRepository); this.baseCommentRepository = baseCommentRepository; this.optionService = optionService; + this.userService = userService; this.eventPublisher = eventPublisher; } @@ -275,6 +280,7 @@ public abstract class BaseCommentServiceImpl extend Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null) { + // Blogger comment User user = authentication.getDetail().getUser(); commentParam.setAuthor(StringUtils.isBlank(user.getNickname()) ? user.getUsername() : user.getNickname()); commentParam.setEmail(user.getEmail()); @@ -284,6 +290,14 @@ public abstract class BaseCommentServiceImpl extend // Validate the comment param manually ValidationUtils.validate(commentParam); + if (authentication == null) { + // Anonymous comment + // Check email + if (userService.getByEmail(commentParam.getEmail()).isPresent()) { + throw new BadRequestException("不能使用博主的邮件,如果您是博主,请登录管理端进行回复。"); + } + } + // Convert to comment return create(commentParam.convertTo()); } diff --git a/src/main/java/run/halo/app/service/impl/JournalCommentServiceImpl.java b/src/main/java/run/halo/app/service/impl/JournalCommentServiceImpl.java index fc1c5c351..40c580cac 100644 --- a/src/main/java/run/halo/app/service/impl/JournalCommentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/JournalCommentServiceImpl.java @@ -15,6 +15,7 @@ import run.halo.app.repository.JournalCommentRepository; import run.halo.app.repository.JournalRepository; import run.halo.app.service.JournalCommentService; import run.halo.app.service.OptionService; +import run.halo.app.service.UserService; import run.halo.app.utils.ServiceUtils; import java.util.Collections; @@ -38,8 +39,9 @@ public class JournalCommentServiceImpl extends BaseCommentServiceImpl public PostCommentServiceImpl(PostCommentRepository postCommentRepository, PostRepository postRepository, + UserService userService, OptionService optionService, ApplicationEventPublisher eventPublisher) { - super(postCommentRepository, optionService, eventPublisher); + super(postCommentRepository, optionService, userService, eventPublisher); this.postCommentRepository = postCommentRepository; this.postRepository = postRepository; } diff --git a/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java b/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java index 0decd4ccb..e59b6d9fb 100644 --- a/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/SheetCommentServiceImpl.java @@ -15,6 +15,7 @@ import run.halo.app.repository.SheetCommentRepository; import run.halo.app.repository.SheetRepository; import run.halo.app.service.OptionService; import run.halo.app.service.SheetCommentService; +import run.halo.app.service.UserService; import run.halo.app.utils.ServiceUtils; import java.util.Collections; @@ -38,9 +39,10 @@ public class SheetCommentServiceImpl extends BaseCommentServiceImpl