diff options
Diffstat (limited to 'juick-server/src/main/java/com/juick')
-rw-r--r-- | juick-server/src/main/java/com/juick/server/EmailManager.java | 3 | ||||
-rw-r--r-- | juick-server/src/main/java/com/juick/server/www/controllers/Settings.java | 20 |
2 files changed, 21 insertions, 2 deletions
diff --git a/juick-server/src/main/java/com/juick/server/EmailManager.java b/juick-server/src/main/java/com/juick/server/EmailManager.java index d6c2bb3f..67c21d1c 100644 --- a/juick-server/src/main/java/com/juick/server/EmailManager.java +++ b/juick-server/src/main/java/com/juick/server/EmailManager.java @@ -123,8 +123,9 @@ public class EmailManager implements ApplicationListener<MessageEvent> { message.setContent(multipart); User emailUser = userService.getUserByEmail(to); if (!emailUser.isAnonymous()) { - message.setHeader("List-Unsubscribe", String.format("https://juick.com/settings?hash=%s", + message.setHeader("List-Unsubscribe", String.format("https://juick.com/settings/unsubscribe?hash=%s", userService.getHashByUID(emailUser.getUid()))); + message.setHeader("List-Unsubscribe-Post", "List-Unsubscribe=One-Click"); } message.saveChanges(); transport.connect(); diff --git a/juick-server/src/main/java/com/juick/server/www/controllers/Settings.java b/juick-server/src/main/java/com/juick/server/www/controllers/Settings.java index 6405b3bd..cc8f43eb 100644 --- a/juick-server/src/main/java/com/juick/server/www/controllers/Settings.java +++ b/juick-server/src/main/java/com/juick/server/www/controllers/Settings.java @@ -16,9 +16,12 @@ */ package com.juick.server.www.controllers; +import com.juick.User; import com.juick.model.NotifyOpts; import com.juick.model.UserInfo; -import com.juick.server.util.*; +import com.juick.server.util.HttpBadRequestException; +import com.juick.server.util.HttpUtils; +import com.juick.server.util.UserUtils; import com.juick.service.*; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; @@ -257,4 +260,19 @@ public class Settings { model.addAttribute("result", result); return "views/settings_result"; } + @PostMapping("/settings/unsubscribe") + public String unsubscribeOneClick(@RequestParam(name = "List-Unsubscribe") String unsubscribe, + ModelMap model) { + User user = UserUtils.getCurrentUser(); + if (!user.isAnonymous()) { + if (unsubscribe.equals("One-Click")) { + emailService.setNotificationsEmail(user.getUid(), StringUtils.EMPTY); + model.addAttribute("title", "Настройки"); + model.addAttribute("visitor", user); + model.addAttribute("result", "Unsubscribed"); + return "views/settings_result"; + } + } + throw new HttpBadRequestException(); + } } |