Browse Source

Weiterleitung von Gast-Mails an Moderatoren bei moderierten Listen implementiert. Behebt Issue #1

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
main
Stephan Richter 8 months ago
parent
commit
8be07ed6ae
  1. 1
      src/main/java/de/srsoftware/widerhall/data/ListMember.java
  2. 20
      src/main/java/de/srsoftware/widerhall/data/MailingList.java

1
src/main/java/de/srsoftware/widerhall/data/ListMember.java

@ -322,6 +322,7 @@ public class ListMember {
* @throws SQLException * @throws SQLException
*/ */
public static ListMember load(MailingList list,User user) throws SQLException { public static ListMember load(MailingList list,User user) throws SQLException {
if (list == null || user == null) return null;
var rs = Database var rs = Database
.open() .open()
.select(TABLE_NAME) .select(TABLE_NAME)

20
src/main/java/de/srsoftware/widerhall/data/MailingList.java

@ -432,30 +432,22 @@ public class MailingList implements MessageHandler, ProblemListener {
var senderEmail = internetAddress.getAddress(); var senderEmail = internetAddress.getAddress();
var user = User.load(senderEmail); var user = User.load(senderEmail);
if (user == null) { // no subscription
if (this.isOpenForGuests()) {
forward(message,subscribers());
} else {
retainMessage(message);
sentRetentionNotification(senderEmail);
}
return;
}
var member = ListMember.load(this, user); var member = ListMember.load(this, user);
if (member == null || member.isAwaiting()) { // no subscription if (member == null || member.isAwaiting()) { // no subscription
if (this.isOpenForGuests()) { if (this.isOpenForGuests()) {
forward(message,subscribers()); forward(message, subscribers());
} else { } else if (this.isOpenForSubscribers()){
retainMessage(message); retainMessage(message);
sentRetentionNotification(senderEmail); sentRetentionNotification(senderEmail);
} else {
// at this point, the message is from a non-member and the list
// is only open to moderators. → forward to moderators
forward(message, moderators());
} }
return; return;
} }
// at this point the member is at least a subscriber! // at this point the member is at least a subscriber!
if (member.isModerator() || this.isOpenForSubscribers()) { if (member.isModerator() || this.isOpenForSubscribers()) {
forward(message,subscribers()); forward(message,subscribers());
} else { } else {

Loading…
Cancel
Save