working on forwarding mail

This commit is contained in:
2022-04-20 08:22:26 +02:00
parent 7b5b6aa701
commit b38b40a677
13 changed files with 82 additions and 34 deletions

View File

@@ -16,6 +16,7 @@ import java.io.IOException;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -27,6 +28,7 @@ public class Rest extends HttpServlet {
private static final Logger LOG = LoggerFactory.getLogger(Rest.class);
private static final String LIST_DISABLE = "list/disable";
private static final String LIST_EDITABLE = "list/editable";
private static final String LIST_DETAIL = "list/detail";
private static final String LIST_ENABLE = "list/enable";
private static final String LIST_HIDE = "list/hide";
private static final String LIST_MEMBERS = "list/members";
@@ -104,6 +106,7 @@ public class Rest extends HttpServlet {
break;
case LIST_SUBSCRIBABLE:
json.put("lists", MailingList.subscribable(user).stream().map(MailingList::minimalMap).toList());
break;
default:
json.put(ERROR,t("No handler for path '{}'!",path));
break;
@@ -139,6 +142,9 @@ public class Rest extends HttpServlet {
var userEmail = req.getParameter(EMAIL);
var permissions = req.getParameter(PERMISSIONS);
switch (path) {
case LIST_DETAIL:
json.putAll(listDetail(listEmail,user));
break;
case LIST_DISABLE:
json.putAll(enableList(listEmail,user,false));
break;
@@ -183,6 +189,14 @@ public class Rest extends HttpServlet {
}
}
private Map listDetail(String listEmail, User user) {
var ml = MailingList.load(listEmail);
if (ml == null) return Map.of(ERROR,t("Mailinglist {} unknown",listEmail));
var map = new HashMap<>();
if (ml.hasState(MailingList.STATE_FORWARD_FROM)) map.put("forward_from",true);
return map;
}
private Map<String, Object> listMembers(String listEmail, User user) {
if (listEmail == null || listEmail.isBlank()) return Map.of(ERROR,"no list email provided!");
if (user.hashPermission(User.PERMISSION_ADMIN) || ListMember.listsOwnedBy(user).contains(listEmail)) {