implemented:
- altering of mail settings - sending email Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
/* © SRSoftware 2024 */
|
||||
package de.srsoftware.oidc.backend;
|
||||
|
||||
import static de.srsoftware.oidc.api.Constants.*;
|
||||
import static de.srsoftware.oidc.api.data.Permission.MANAGE_SMTP;
|
||||
import static java.net.HttpURLConnection.HTTP_FORBIDDEN;
|
||||
import static java.net.HttpURLConnection.HTTP_UNAUTHORIZED;
|
||||
@@ -31,8 +32,33 @@ public class EmailController extends Controller {
|
||||
return notFound(ex);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doPost(String path, HttpExchange ex) throws IOException {
|
||||
var optSession = getSession(ex);
|
||||
if (optSession.isEmpty()) return sendEmptyResponse(HTTP_UNAUTHORIZED, ex);
|
||||
var user = optSession.get().user();
|
||||
switch (path) {
|
||||
case "/settings":
|
||||
return saveSettings(ex, user);
|
||||
}
|
||||
return notFound(ex);
|
||||
}
|
||||
|
||||
private boolean provideSettings(HttpExchange ex, User user) throws IOException {
|
||||
if (!user.hasPermission(MANAGE_SMTP)) return sendEmptyResponse(HTTP_FORBIDDEN, ex);
|
||||
return sendContent(ex, mailConfig.map());
|
||||
}
|
||||
|
||||
private boolean saveSettings(HttpExchange ex, User user) throws IOException {
|
||||
if (!user.hasPermission(MANAGE_SMTP)) return sendEmptyResponse(HTTP_FORBIDDEN, ex);
|
||||
var data = json(ex);
|
||||
if (data.has(SMTP_HOST)) mailConfig.smtpHost(data.getString(SMTP_HOST));
|
||||
if (data.has(SMTP_PORT)) mailConfig.smtpPort(data.getInt(SMTP_PORT));
|
||||
if (data.has(SMTP_USER)) mailConfig.senderAddress(data.getString(SMTP_USER));
|
||||
if (data.has(SMTP_PASSWORD)) mailConfig.senderPassword(data.getString(SMTP_PASSWORD));
|
||||
if (data.has(SMTP_AUTH)) mailConfig.smtpAuth(data.getBoolean(SMTP_AUTH));
|
||||
if (data.has(START_TLS)) mailConfig.startTls(data.getBoolean(START_TLS));
|
||||
mailConfig.save();
|
||||
return sendContent(ex, "saved");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,20 +20,13 @@ import java.util.Optional;
|
||||
import org.json.JSONObject;
|
||||
|
||||
public class UserController extends Controller {
|
||||
private final UserService users;
|
||||
private final MailConfig mailConfig;
|
||||
private final Authenticator auth;
|
||||
private final UserService users;
|
||||
private final MailConfig mailConfig;
|
||||
|
||||
public UserController(MailConfig mailConfig, SessionService sessionService, UserService userService) {
|
||||
super(sessionService);
|
||||
users = userService;
|
||||
this.mailConfig = mailConfig;
|
||||
auth = new Authenticator() {
|
||||
// override the getPasswordAuthentication method
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(mailConfig.senderAddress(), mailConfig.senderPassword());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private boolean addUser(HttpExchange ex, Session session) throws IOException {
|
||||
@@ -127,7 +120,7 @@ public class UserController extends Controller {
|
||||
private void senPasswordLink(User user) {
|
||||
LOG.log(WARNING, "Sending password link to {0}", user.email());
|
||||
try {
|
||||
var session = jakarta.mail.Session.getDefaultInstance(mailConfig.props(), auth);
|
||||
var session = jakarta.mail.Session.getDefaultInstance(mailConfig.props(), mailConfig.authenticator());
|
||||
Message message = new MimeMessage(session);
|
||||
message.setFrom(new InternetAddress(mailConfig.senderAddress()));
|
||||
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(user.email()));
|
||||
|
||||
Reference in New Issue
Block a user