From d2a9c804ce7e1cde174a0229aae74abe90dee57c Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Mon, 20 May 2024 17:22:42 +0800 Subject: [PATCH] refactor: email notifications are now sent only to verified email addresses (#5905) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind improvement /area core /milestone 2.16.x #### What this PR does / why we need it: 邮件通知功能现在只向经过验证的邮箱地址发送通知匿名用户除外 #### Which issue(s) this PR fixes: Fixes #5722 #### Does this PR introduce a user-facing change? ```release-note 邮件通知功能现在只向经过验证的邮箱地址发送通知匿名用户除外 ``` --- .../app/notification/DefaultSubscriberEmailResolver.java | 1 + .../notification/DefaultSubscriberEmailResolverTest.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/application/src/main/java/run/halo/app/notification/DefaultSubscriberEmailResolver.java b/application/src/main/java/run/halo/app/notification/DefaultSubscriberEmailResolver.java index bc86dcdc1..473e0e77f 100644 --- a/application/src/main/java/run/halo/app/notification/DefaultSubscriberEmailResolver.java +++ b/application/src/main/java/run/halo/app/notification/DefaultSubscriberEmailResolver.java @@ -30,6 +30,7 @@ public class DefaultSubscriberEmailResolver implements SubscriberEmailResolver { return Mono.fromSupplier(() -> getEmail(subscriber)); } return client.fetch(User.class, subscriber.getName()) + .filter(user -> user.getSpec().isEmailVerified()) .mapNotNull(user -> user.getSpec().getEmail()); } diff --git a/application/src/test/java/run/halo/app/notification/DefaultSubscriberEmailResolverTest.java b/application/src/test/java/run/halo/app/notification/DefaultSubscriberEmailResolverTest.java index 2c3f1989c..a222860f3 100644 --- a/application/src/test/java/run/halo/app/notification/DefaultSubscriberEmailResolverTest.java +++ b/application/src/test/java/run/halo/app/notification/DefaultSubscriberEmailResolverTest.java @@ -50,6 +50,15 @@ class DefaultSubscriberEmailResolverTest { user.getMetadata().setName("fake-user"); user.setSpec(new User.UserSpec()); user.getSpec().setEmail("test@halo.run"); + user.getSpec().setEmailVerified(false); + when(client.fetch(eq(User.class), eq("fake-user"))).thenReturn(Mono.just(user)); + + subscriber.setName("fake-user"); + subscriberEmailResolver.resolve(subscriber) + .as(StepVerifier::create) + .verifyComplete(); + + user.getSpec().setEmailVerified(true); when(client.fetch(eq(User.class), eq("fake-user"))).thenReturn(Mono.just(user)); subscriber.setName("fake-user");