working on list submission
This commit is contained in:
@@ -123,6 +123,10 @@ public class MailingList {
|
||||
return list;
|
||||
}
|
||||
|
||||
public static boolean isOpen(String list) {
|
||||
return openLists().stream().filter(ml -> ml.email.equals(list)).count() > 0;
|
||||
}
|
||||
|
||||
public Map<String, Object> safeMap() {
|
||||
var map = new HashMap<String,Object>();
|
||||
String[] parts = email.split("@", 2);
|
||||
@@ -163,4 +167,7 @@ public class MailingList {
|
||||
return this;
|
||||
}
|
||||
|
||||
public String email() {
|
||||
return email;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ public class Web extends HttpServlet {
|
||||
private static final String LOGIN = "login";
|
||||
private static final String LOGOUT = "logout";
|
||||
private static final String REGISTER = "register";
|
||||
private static final String SUBSCRIBE = "subscribe";
|
||||
private static final String RELOAD = "reload";
|
||||
private static final String IMAP_HOST = "imap_host";
|
||||
private static final String IMAP_PORT = "imap_port";
|
||||
@@ -153,14 +154,22 @@ public class Web extends HttpServlet {
|
||||
case "css":
|
||||
case INDEX:
|
||||
return loadTemplate(path,data,resp);
|
||||
case SUBSCRIBE:
|
||||
var list = req.getParameter(LIST);
|
||||
// TODO check permission
|
||||
if (MailingList.isOpen(list)) {
|
||||
data.put(LIST, list);
|
||||
return loadTemplate(path, data, resp);
|
||||
}
|
||||
return t("You are not allowed to subscribe to '{}'!",list);
|
||||
case "js":
|
||||
resp.setContentType("text/javascript");
|
||||
return loadTemplate(path,null,resp);
|
||||
return loadTemplate(path,data,resp);
|
||||
case LOGIN:
|
||||
try {
|
||||
if (User.noUsers()) return loadTemplate(REGISTER, Map.of(NOTES,t("User database is empty. Create admin user first:")), resp);
|
||||
return loadTemplate(path,null,resp);
|
||||
} catch (SQLException throwables) {
|
||||
} catch (SQLException e) {
|
||||
return "Error reading user database!";
|
||||
}
|
||||
case LOGOUT:
|
||||
@@ -204,12 +213,14 @@ public class Web extends HttpServlet {
|
||||
var path = req.getPathInfo();
|
||||
path = path == null ? INDEX : path.substring(1);
|
||||
switch (path){
|
||||
case ADD_LIST:
|
||||
return addList(req,resp);
|
||||
case LOGIN:
|
||||
return handleLogin(req,resp);
|
||||
case REGISTER:
|
||||
return registerUser(req,resp);
|
||||
case ADD_LIST:
|
||||
return addList(req,resp);
|
||||
case SUBSCRIBE:
|
||||
return subscribe(req,resp);
|
||||
}
|
||||
|
||||
return t("No handler for path {}!",path);
|
||||
@@ -293,5 +304,25 @@ public class Web extends HttpServlet {
|
||||
}
|
||||
}
|
||||
|
||||
private String subscribe(HttpServletRequest req, HttpServletResponse resp) {
|
||||
var name = req.getParameter(NAME);
|
||||
var email = req.getParameter(EMAIL);
|
||||
var pass = req.getParameter(PASSWORD);
|
||||
var list = req.getParameter(LIST);
|
||||
var data = new HashMap<String,String>();
|
||||
data.put(NAME,name);
|
||||
data.put(EMAIL,email);
|
||||
data.put(PASSWORD,pass);
|
||||
data.put(LIST,list);
|
||||
if (list == null || list.isBlank()){
|
||||
data.put(ERROR,"No list provided by form data!");
|
||||
return loadTemplate(SUBSCRIBE,data,resp);
|
||||
|
||||
}
|
||||
if (name == null || name.isBlank() || email == null || email.isBlank()){
|
||||
data.put(ERROR,"Name and email are required fields for list subscription!");
|
||||
return loadTemplate(SUBSCRIBE,data,resp);
|
||||
}
|
||||
return "not implemented";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user