working in list management
This commit is contained in:
@@ -2,6 +2,7 @@ package de.srsoftware.widerhall.web;
|
||||
|
||||
import de.srsoftware.widerhall.Configuration;
|
||||
import de.srsoftware.widerhall.Util;
|
||||
import de.srsoftware.widerhall.data.MailingList;
|
||||
import de.srsoftware.widerhall.data.User;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
@@ -23,11 +24,19 @@ import static de.srsoftware.widerhall.Constants.*;
|
||||
import static de.srsoftware.widerhall.Util.t;
|
||||
|
||||
public class Web extends HttpServlet {
|
||||
|
||||
private static final String ADD_LIST = "add_list";
|
||||
private static final Logger LOG = LoggerFactory.getLogger(Web.class);
|
||||
private static final String LOGIN = "login";
|
||||
private static final String LOGOUT = "logout";
|
||||
private static final String REGISTER = "register";
|
||||
private static final String IMAP_HOST = "imap_host";
|
||||
private static final String IMAP_PORT = "imap_port";
|
||||
private static final String IMAP_USER = "imap_user";
|
||||
private static final String IMAP_PASS = "imap_pass";
|
||||
private static final String SMTP_HOST = "smtp_host";
|
||||
private static final String SMTP_PORT = "smtp_port";
|
||||
private static final String SMTP_USER = "smtp_user";
|
||||
private static final String SMTP_PASS = "smtp_pass";
|
||||
private final String baseDir;
|
||||
private STGroup templates;
|
||||
private static final String WEB_ROOT = "/web";
|
||||
@@ -38,6 +47,77 @@ public class Web extends HttpServlet {
|
||||
loadTemplates();
|
||||
}
|
||||
|
||||
private String addList(HttpServletRequest req, HttpServletResponse resp) {
|
||||
|
||||
var user = req.getSession().getAttribute(USER);
|
||||
if (user == null) return redirectTo(LOGIN,resp);
|
||||
var data = new HashMap<String,Object>();
|
||||
data.put(USER,user);
|
||||
|
||||
var name = req.getParameter(NAME);
|
||||
data.put(NAME,name);
|
||||
|
||||
var email = req.getParameter(EMAIL);
|
||||
data.put(EMAIL,email);
|
||||
|
||||
var imapHost = req.getParameter(IMAP_HOST);
|
||||
data.put(IMAP_HOST,imapHost);
|
||||
var imapUser = req.getParameter(IMAP_USER);
|
||||
data.put(IMAP_USER,imapUser);
|
||||
var imapPass = req.getParameter(IMAP_PASS);
|
||||
var smtpHost = req.getParameter(SMTP_HOST);
|
||||
data.put(SMTP_HOST,smtpHost);
|
||||
var smtpUser = req.getParameter(SMTP_USER);
|
||||
data.put(SMTP_USER,smtpUser);
|
||||
var smtpPass = req.getParameter(SMTP_PASS);
|
||||
|
||||
Integer imapPort = 993;
|
||||
data.put(IMAP_PORT,imapPort);
|
||||
|
||||
Integer smtpPort = 465;
|
||||
data.put(SMTP_PORT,smtpPort);
|
||||
|
||||
if (name == null || name.isBlank() || email == null || email.isBlank()) {
|
||||
data.put(ERROR,"List name and address are required!");
|
||||
return loadTemplate(ADD_LIST,data,resp);
|
||||
}
|
||||
|
||||
if (imapHost == null || imapHost.isBlank() || imapUser == null || imapUser.isBlank() || imapPass == null || imapPass.isBlank()) {
|
||||
data.put(ERROR,"IMAP credentials are required!");
|
||||
return loadTemplate(ADD_LIST,data,resp);
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
imapPort = Integer.parseInt(req.getParameter(IMAP_PORT));
|
||||
data.put(IMAP_PORT,imapPort);
|
||||
} catch (NumberFormatException nfe){
|
||||
data.put(ERROR,t("'{}' is not a proper port number!",req.getParameter(IMAP_PORT)));
|
||||
return loadTemplate(ADD_LIST,data,resp);
|
||||
}
|
||||
|
||||
if (smtpHost == null || smtpHost.isBlank() || smtpUser == null || smtpUser.isBlank() || smtpPass == null || smtpPass.isBlank()) {
|
||||
data.put(ERROR,"SMTP credentials are required!");
|
||||
return loadTemplate(ADD_LIST,data,resp);
|
||||
}
|
||||
|
||||
try {
|
||||
smtpPort = Integer.parseInt(req.getParameter(SMTP_PORT));
|
||||
data.put(SMTP_PORT,smtpPort);
|
||||
} catch (NumberFormatException nfe){
|
||||
data.put(ERROR,t("'{}' is not a proper port number!",req.getParameter(SMTP_PORT)));
|
||||
return loadTemplate(ADD_LIST,data,resp);
|
||||
}
|
||||
|
||||
try {
|
||||
MailingList.create(email,name,imapHost,imapPort,imapUser,imapPass,smtpHost,smtpPort,smtpUser,smtpPass);
|
||||
return redirectTo(INDEX,resp);
|
||||
} catch (SQLException e) {
|
||||
return t("Failed to create list '{}': {}",name,e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
String error = handleGet(req, resp);
|
||||
@@ -80,7 +160,7 @@ public class Web extends HttpServlet {
|
||||
var o = req.getSession().getAttribute("user");
|
||||
if (o instanceof User user){
|
||||
var data = new HashMap<String,Object>();
|
||||
data.put(USER,user.map());
|
||||
data.put(USER,user.safeMap());
|
||||
data.put(NOTES,notes);
|
||||
return loadTemplate(path,data,resp);
|
||||
}
|
||||
@@ -116,6 +196,8 @@ public class Web extends HttpServlet {
|
||||
return handleLogin(req,resp);
|
||||
case REGISTER:
|
||||
return registerUser(req,resp);
|
||||
case ADD_LIST:
|
||||
return addList(req,resp);
|
||||
}
|
||||
|
||||
return t("No handler for path {}!",path);
|
||||
|
||||
Reference in New Issue
Block a user