diff --git a/src/main/java/de/srsoftware/widerhall/data/MailingList.java b/src/main/java/de/srsoftware/widerhall/data/MailingList.java index 4a83954..a3bfe6a 100644 --- a/src/main/java/de/srsoftware/widerhall/data/MailingList.java +++ b/src/main/java/de/srsoftware/widerhall/data/MailingList.java @@ -225,8 +225,10 @@ public class MailingList { return String.join(", ", states); } - public void requestSubscription(User user) throws SQLException, MessagingException { - var member = ListMember.create(this,user,ListMember.STATE_AWAITING_CONFIRMATION); + public void requestSubscription(User user, boolean skipConfirmation) throws SQLException, MessagingException { + var state = skipConfirmation ? ListMember.STATE_SUBSCRIBER : ListMember.STATE_AWAITING_CONFIRMATION; + var member = ListMember.create(this,user,state); + if (skipConfirmation) return; var token = member.token(); try { sendConfirmationRequest(user, token); diff --git a/src/main/java/de/srsoftware/widerhall/web/Web.java b/src/main/java/de/srsoftware/widerhall/web/Web.java index 8934b71..47d24c5 100644 --- a/src/main/java/de/srsoftware/widerhall/web/Web.java +++ b/src/main/java/de/srsoftware/widerhall/web/Web.java @@ -329,6 +329,7 @@ public class Web extends HttpServlet { data.put(NAME,name); data.put(EMAIL,email); data.put(LIST,listEmail); + var skipConfirmation = false; var list = MailingList.load(listEmail); @@ -351,6 +352,7 @@ public class Web extends HttpServlet { int code = cause.getErrorCode(); if (code == PRIMARY_KEY_CONSTRAINT) try {// user already exists user = User.loadUser(email,pass); + skipConfirmation = pass != null; // subscription with email address already known to database // success → subscribe } catch (InvalidKeyException | SQLException e) { // invalid credentials @@ -361,7 +363,7 @@ public class Web extends HttpServlet { data.put(USER,user.safeMap()); try { - list.requestSubscription(user); + list.requestSubscription(user,skipConfirmation); data.put(NOTES,t("Successfully subscribed '{}' to '{}'.",user.email(),list.email())); return loadTemplate(INDEX,data,resp); } catch (SQLException sqle) {