diff --git a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy index 0e0a2a4cdc5..f9d9b14f57e 100644 --- a/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy +++ b/application-engine/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/logic/action/ActionDelegate.groovy @@ -21,9 +21,6 @@ import com.netgrif.application.engine.export.service.interfaces.IExportService import com.netgrif.application.engine.impersonation.service.interfaces.IImpersonationService import com.netgrif.application.engine.importer.service.FieldFactory import com.netgrif.application.engine.integration.modules.ModuleHolder -import com.netgrif.application.engine.mail.domain.MailDraft -import com.netgrif.application.engine.mail.interfaces.IMailAttemptService -import com.netgrif.application.engine.mail.interfaces.IMailService import com.netgrif.application.engine.objects.auth.domain.Author import com.netgrif.application.engine.objects.auth.domain.IUser import com.netgrif.application.engine.objects.auth.domain.LoggedUser @@ -124,9 +121,6 @@ class ActionDelegate { @Autowired IPdfGenerator pdfGenerator - @Autowired - IMailService mailService - @Autowired GroupService groupService @@ -136,9 +130,6 @@ class ActionDelegate { @Autowired IRegistrationService registrationService - @Autowired - IMailAttemptService mailAttemptService - @Autowired UserDetailsServiceImpl userDetailsService @@ -1227,20 +1218,6 @@ class ActionDelegate { generatePdf(sourceTransitionId: transitionId, targetFileFieldId: fileFieldId, dateZoneId: dateZoneId, sourceCase: fromCase, targetCase: saveToCase) } - void sendEmail(List to, String subject, String body) { - MailDraft mailDraft = MailDraft.builder(mailFrom, to).subject(subject).body(body).build() - sendMail(mailDraft) - } - - void sendEmail(List to, String subject, String body, Map attachments) { - MailDraft mailDraft = MailDraft.builder(mailFrom, to).subject(subject).body(body).attachments(attachments).build() - sendMail(mailDraft) - } - - void sendMail(MailDraft mailDraft) { - mailService.sendMail(mailDraft) - } - def changeUserByEmail(String email) { [email : { cl -> changeUserByEmail(email, "email", cl) @@ -1314,23 +1291,23 @@ class ActionDelegate { userService.saveUser(user, null) } - MessageResource inviteUser(String email) { - NewUserRequest newUserRequest = new NewUserRequest() - newUserRequest.email = email - newUserRequest.groups = new HashSet<>() - newUserRequest.processRoles = new HashSet<>() - return inviteUser(newUserRequest) - } - - MessageResource inviteUser(NewUserRequest newUserRequest) { - IUser user = registrationService.createNewUser(newUserRequest) - if (user == null) - return MessageResource.successMessage("Done") - mailService.sendRegistrationEmail(user) - - mailAttemptService.mailAttempt(newUserRequest.email) - return MessageResource.successMessage("Done") - } +// MessageResource inviteUser(String email) { +// NewUserRequest newUserRequest = new NewUserRequest() +// newUserRequest.email = email +// newUserRequest.groups = new HashSet<>() +// newUserRequest.processRoles = new HashSet<>() +// return inviteUser(newUserRequest) +// } +// +// MessageResource inviteUser(NewUserRequest newUserRequest) { +// IUser user = registrationService.createNewUser(newUserRequest) +// if (user == null) +// return MessageResource.successMessage("Done") +// mailService.sendRegistrationEmail(user) +// +// mailAttemptService.mailAttempt(newUserRequest.email) +// return MessageResource.successMessage("Done") +// } void deleteUser(String email) { IUser user = userService.findByEmail(email, null) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/AuthenticationController.java b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/AuthenticationController.java index 4bc297b71b5..308c247670c 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/auth/web/AuthenticationController.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/auth/web/AuthenticationController.java @@ -12,8 +12,6 @@ import com.netgrif.application.engine.auth.web.requestbodies.RegistrationRequest; import com.netgrif.application.engine.auth.service.UserFactory; import com.netgrif.application.engine.configuration.properties.ServerAuthProperties; -import com.netgrif.application.engine.mail.interfaces.IMailAttemptService; -import com.netgrif.application.engine.mail.interfaces.IMailService; import com.netgrif.application.engine.security.service.ISecurityContextService; import freemarker.template.TemplateException; import io.swagger.v3.oas.annotations.Operation; @@ -50,15 +48,9 @@ public class AuthenticationController { @Autowired private IRegistrationService registrationService; - @Autowired - private IMailService mailService; - @Autowired private UserService userService; - @Autowired - private IMailAttemptService mailAttemptService; - @Autowired private ServerAuthProperties serverAuthProperties; @@ -88,32 +80,6 @@ public MessageResource signup(@RequestBody RegistrationRequest regRequest) { } } - @Operation(summary = "Send invitation to a new user", security = {@SecurityRequirement(name = "BasicAuth")}) - @PostMapping(value = "/invite", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) - public MessageResource invite(@RequestBody NewUserRequest newUserRequest, Authentication auth) { - try { - if (!serverAuthProperties.isOpenRegistration() && (auth == null || !((LoggedUser) auth.getPrincipal()).getSelfOrImpersonated().isAdmin())) { - return MessageResource.errorMessage("Only admin can invite new users!"); - } - - newUserRequest.email = URLDecoder.decode(newUserRequest.email, StandardCharsets.UTF_8.name()); - if (mailAttemptService.isBlocked(newUserRequest.email)) { - return MessageResource.successMessage("Done"); - } - - RegisteredUser user = registrationService.createNewUser(newUserRequest); - if (user == null) - return MessageResource.successMessage("Done"); - mailService.sendRegistrationEmail(user); - - mailAttemptService.mailAttempt(newUserRequest.email); - return MessageResource.successMessage("Done"); - } catch (IOException | TemplateException | MessagingException e) { - log.error(e.toString()); - return MessageResource.errorMessage("Failed"); - } - } - @Operation(summary = "Verify validity of a registration token", security = {@SecurityRequirement(name = "BasicAuth")}) @PostMapping(value = "/token/verify", consumes = MediaType.TEXT_PLAIN_VALUE, produces = MediaTypes.HAL_JSON_VALUE) public MessageResource verifyToken(@RequestBody String token) { @@ -150,27 +116,6 @@ public ResponseEntity login(Authentication auth, Locale locale) { return ResponseEntity.ok(userResponseFactory.getUser(userService.findById(loggedUser.getId(), null), locale)); } - @Operation(summary = "Reset password") - @PostMapping(value = "/reset", consumes = MediaType.TEXT_PLAIN_VALUE, produces = MediaTypes.HAL_JSON_VALUE) - public MessageResource resetPassword(@RequestBody String recoveryEmail) { - if (mailAttemptService.isBlocked(recoveryEmail)) { - return MessageResource.successMessage("Done"); - } - try { - RegisteredUser user = registrationService.resetPassword(recoveryEmail); - if (user != null) { - mailService.sendPasswordResetEmail(user); - mailAttemptService.mailAttempt(user.getEmail()); - return MessageResource.successMessage("Done"); - } else { - return MessageResource.successMessage("Done"); - } - } catch (MessagingException | IOException | TemplateException e) { - log.error(e.toString()); - return MessageResource.errorMessage("Failed"); - } - } - @Operation(summary = "Account recovery") @PostMapping(value = "/recover", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaTypes.HAL_JSON_VALUE) public MessageResource recoverAccount(@RequestBody RegistrationRequest request) { diff --git a/application-engine/src/main/java/com/netgrif/application/engine/configuration/MailConfiguration.java b/application-engine/src/main/java/com/netgrif/application/engine/configuration/MailConfiguration.java deleted file mode 100644 index c7fb902eb78..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/configuration/MailConfiguration.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.netgrif.application.engine.configuration; - -import com.netgrif.application.engine.mail.MailService; -import com.netgrif.application.engine.mail.interfaces.IMailService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.mail.javamail.JavaMailSender; -import org.springframework.mail.javamail.JavaMailSenderImpl; - -import java.util.Properties; - -@Configuration -public class MailConfiguration { - - @Autowired - private freemarker.template.Configuration configuration; - - @Value("${spring.mail.default-encoding}") - private String encoding; - @Value("${spring.mail.host}") - private String host; - @Value("${spring.mail.jndi-name.spring.mail.username}") - private String username; - @Value("${spring.mail.jndi-name.spring.mail.password}") - private String password; - @Value("${spring.mail.port}") - private int port; - @Value("${spring.mail.properties.mail.debug}") - private boolean debug; - @Value("${spring.mail.properties.mail.smtp.debug}") - private boolean smtpDebug; - @Value("${spring.mail.properties.mail.smtp.auth}") - private boolean smtpAuth; - @Value("${spring.mail.properties.mail.smtp.starttls}") - private boolean smtpStartTls; - @Value("${spring.mail.protocol}") - private String protocol; - @Value("${spring.mail.test-connection}") - private boolean testConnection; - @Value("${spring.mail.smtp.starttls.enable}") - private boolean smtpStartTlsEnable; - @Value("${spring.mail.smtp.starttls.required}") - private boolean smtpStartTlsRequired; - - @Bean - public JavaMailSenderImpl mailSender() { - Properties mailProperties = new Properties(); - mailProperties.put("mail.smtp.starttls.enable", smtpStartTlsEnable); - mailProperties.put("mail.smtp.starttls.required", smtpStartTlsRequired); - mailProperties.put("mail.debug", debug); - mailProperties.put("mail.smtp.debug", smtpDebug); - mailProperties.put("mail.smtp.auth", smtpAuth); - mailProperties.put("mail.smtp.starttls", smtpStartTls); - JavaMailSenderImpl sender = new JavaMailSenderImpl(); - sender.setPort(port); - sender.setHost(host); - sender.setUsername(username); - sender.setPassword(password); - sender.setProtocol(protocol); - sender.setJavaMailProperties(mailProperties); - return sender; - } - - @Bean - public IMailService mailService(JavaMailSender mailSender) { - MailService mailService = new MailService(); - mailService.setMailSender(mailSender); - - configuration.setClassForTemplateLoading(this.getClass(), "/templates"); - mailService.setConfiguration(configuration); - return mailService; - } -} \ No newline at end of file diff --git a/application-engine/src/main/java/com/netgrif/application/engine/configuration/drools/RuleEngineGlobalsProvider.java b/application-engine/src/main/java/com/netgrif/application/engine/configuration/drools/RuleEngineGlobalsProvider.java index 2d2a1b15613..2f676be712c 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/configuration/drools/RuleEngineGlobalsProvider.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/configuration/drools/RuleEngineGlobalsProvider.java @@ -4,7 +4,6 @@ //import com.netgrif.application.engine.configuration.drools.interfaces.IRuleEngineGlobalsProvider; //import com.netgrif.application.engine.elastic.service.interfaces.IElasticCaseService; //import com.netgrif.application.engine.elastic.service.interfaces.IElasticTaskService; -//import com.netgrif.application.engine.mail.interfaces.IMailService; //import com.netgrif.application.engine.rules.domain.FactRepository; //import com.netgrif.application.engine.rules.service.interfaces.IRuleEvaluationScheduleService; //import com.netgrif.application.engine.workflow.service.interfaces.IDataService; diff --git a/application-engine/src/main/java/com/netgrif/application/engine/mail/EmailType.java b/application-engine/src/main/java/com/netgrif/application/engine/mail/EmailType.java deleted file mode 100644 index 080d401b697..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/mail/EmailType.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.netgrif.application.engine.mail; - - -import lombok.Getter; - -public enum EmailType { - REGISTRATION("registration.html", "Registration invite"), - PASSWORD_RESET("password-reset.html", "Reset password"); - - @Getter - String template; - @Getter - String subject; - - EmailType(String template, String subject) { - this.template = template; - this.subject = subject; - } -} \ No newline at end of file diff --git a/application-engine/src/main/java/com/netgrif/application/engine/mail/MailAttemptService.java b/application-engine/src/main/java/com/netgrif/application/engine/mail/MailAttemptService.java deleted file mode 100644 index 6b841ee8a66..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/mail/MailAttemptService.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.netgrif.application.engine.mail; - -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import com.netgrif.application.engine.configuration.properties.SecurityLimitsProperties; -import com.netgrif.application.engine.mail.interfaces.IMailAttemptService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.concurrent.ExecutionException; - -@Slf4j -@Service -public class MailAttemptService implements IMailAttemptService { - - private SecurityLimitsProperties securityLimitsProperties; - - private LoadingCache attemptsCache; - - @Autowired - public MailAttemptService(SecurityLimitsProperties securityLimitsProperties) { - super(); - this.securityLimitsProperties = securityLimitsProperties; - attemptsCache = CacheBuilder.newBuilder(). - expireAfterWrite(securityLimitsProperties.getEmailBlockDuration(), securityLimitsProperties.getEmailBlockTimeType()).build(new CacheLoader() { - public Integer load(String key) { - return 0; - } - }); - } - - public void mailAttempt(String key) { - int attempts = 0; - try { - attempts = attemptsCache.get(key); - } catch (ExecutionException e) { - log.error("Error reading mail attempts cache for key " + key, e); - attempts = 0; - } - attempts++; - attemptsCache.put(key, attempts); - } - - public boolean isBlocked(String key) { - try { - return attemptsCache.get(key) >= securityLimitsProperties.getEmailSendsAttempts(); - } catch (ExecutionException e) { - log.error("Error reading mail attempts cache for key " + key, e); - return false; - } - } -} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/mail/MailService.java b/application-engine/src/main/java/com/netgrif/application/engine/mail/MailService.java deleted file mode 100644 index 15da4a7855e..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/mail/MailService.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.netgrif.application.engine.mail; - -import com.netgrif.application.engine.objects.auth.domain.RegisteredUser; -import com.netgrif.application.engine.auth.service.interfaces.IRegistrationService; -import com.netgrif.application.engine.configuration.properties.ServerAuthProperties; -import com.netgrif.application.engine.mail.domain.MailDraft; -import com.netgrif.application.engine.mail.interfaces.IMailService; -import freemarker.template.Configuration; -import freemarker.template.Template; -import freemarker.template.TemplateException; -import jakarta.mail.MessagingException; -import jakarta.mail.internet.MimeMessage; -import lombok.Getter; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.mail.javamail.JavaMailSender; -import org.springframework.mail.javamail.MimeMessageHelper; -import org.springframework.stereotype.Service; -import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; - -import java.io.IOException; -import java.io.StringReader; -import java.nio.charset.StandardCharsets; -import java.time.format.DateTimeFormatter; -import java.util.*; - -@Slf4j -@Service -public class MailService implements IMailService { - - public static final String TOKEN = "token"; - public static final String VALIDITY = "validity"; - public static final String EXPIRATION = "expiration"; - public static final String SERVER = "server"; - public static final String NAME = "name"; - - @Getter - @Value("${nae.mail.redirect-to.port}") - protected String port; - - @Getter - @Value("${nae.mail.redirect-to.host}") - protected String domain; - - @Getter - @Value("${nae.mail.redirect-to.ssl}") - protected boolean ssl; - - @Getter - @Value("${nae.mail.from}") - protected String mailFrom; - - @Getter - @Setter - protected JavaMailSender mailSender; - - @Getter - @Setter - protected Configuration configuration; - - @Autowired - private IRegistrationService registrationService; - - @Autowired - private ServerAuthProperties serverAuthProperties; - - @Override - public void sendRegistrationEmail(RegisteredUser user) throws IOException, TemplateException, MessagingException { - List recipients = new LinkedList<>(); - Map model = new HashMap<>(); - - recipients.add(user.getEmail()); - model.put(TOKEN, registrationService.encodeToken(user.getEmail(), user.getToken())); - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy"); - model.put(VALIDITY, "" + serverAuthProperties.getTokenValidityPeriod()); - model.put(EXPIRATION, registrationService.generateExpirationDate().format(formatter)); - model.put(SERVER, getServerURL()); - - MailDraft mailDraft = MailDraft.builder(mailFrom, recipients).subject(EmailType.REGISTRATION.getSubject()) - .body(configuration.getTemplate(EmailType.REGISTRATION.template).toString()).model(model).build(); - MimeMessage email = buildEmail(mailDraft); - mailSender.send(email); - - log.info("Registration email sent to [" + user.getEmail() + "] with token [" + model.get(TOKEN) + "], expiring on [" + model.get(EXPIRATION) + "]"); - } - - @Override - public void sendPasswordResetEmail(RegisteredUser user) throws IOException, TemplateException, MessagingException { - Map model = new HashMap<>(); - - model.put(NAME, user.getFirstName()); - model.put(TOKEN, registrationService.encodeToken(user.getEmail(), user.getToken())); - model.put(VALIDITY, "" + serverAuthProperties.getTokenValidityPeriod()); - model.put(EXPIRATION, registrationService.generateExpirationDate().format(DateTimeFormatter.ofPattern("dd.MM.yyyy"))); - model.put(SERVER, getServerURL()); - - MailDraft mailDraft = MailDraft.builder(mailFrom, Collections.singletonList(user.getEmail())).subject(EmailType.PASSWORD_RESET.getSubject()) - .body(configuration.getTemplate(EmailType.PASSWORD_RESET.template).toString()).model(model).build(); - MimeMessage email = buildEmail(mailDraft); - mailSender.send(email); - - log.info("Reset email sent to [" + user.getEmail() + "] with token [" + model.get(TOKEN) + "], expiring on [" + model.get(EXPIRATION) + "]"); - } - - @Override - public void testConnection() { - //TODO: remove? -// try { -// ((JavaMailSenderImpl) mailSender).testConnection(); -// log.info("MAIL: Connection to mail server is stable"); -// } catch (MessagingException e) { -// log.error("MAIL: Connection failed!", e); -// } - } - - - @Override - public void sendMail(MailDraft mailDraft) throws IOException, TemplateException, MessagingException { - MimeMessage email = buildEmail(mailDraft); - mailSender.send(email); - - String formattedRecipients = StringUtils.join(mailDraft.getTo(), ", "); - log.info("Email sent to [" + formattedRecipients + "]"); - } - - protected MimeMessage buildEmail(MailDraft draft) throws MessagingException, IOException, TemplateException { - MimeMessage message = mailSender.createMimeMessage(); - message.setSubject(draft.getSubject()); - - MimeMessageHelper helper = new MimeMessageHelper(message, true, StandardCharsets.UTF_8.name()); - helper.setFrom(draft.getFrom()); - helper.setTo(draft.getTo().toArray(new String[draft.getTo().size()])); - helper.setCc(draft.getCc().toArray(new String[draft.getCc().size()])); - helper.setBcc(draft.getBcc().toArray(new String[draft.getBcc().size()])); - helper.setSubject(draft.getSubject()); - - if (!draft.getModel().isEmpty()) { - Template template = new Template("mailTemplate", new StringReader(draft.getBody()), configuration); - helper.setText(FreeMarkerTemplateUtils.processTemplateIntoString(template, draft.getModel()), true); - } else { - helper.setText(draft.getBody(), draft.isHtml()); - } - - draft.getAttachments().forEach((s, inputStream) -> { - try { - helper.addAttachment(s, inputStream); - } catch (MessagingException e) { - log.error("Building email failed: ", e); - } - }); - return message; - } - - - protected String getServerURL() { - String encryptedHttp = ssl ? "https://" : "http://"; - String usedPort = port != null && !port.isEmpty() ? (":" + port) : ""; - return encryptedHttp + domain + usedPort; - } -} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/mail/domain/MailDraft.java b/application-engine/src/main/java/com/netgrif/application/engine/mail/domain/MailDraft.java deleted file mode 100644 index 88bfa1b8e20..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/mail/domain/MailDraft.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.netgrif.application.engine.mail.domain; - -import lombok.Builder; -import lombok.Data; - -import java.io.File; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -@Builder(builderMethodName = "mailDraftBuilder") -@Data -public class MailDraft { - - String from; - - @Builder.Default - List to = new ArrayList<>(); - - @Builder.Default - List cc = new ArrayList<>(); - - @Builder.Default - List bcc = new ArrayList<>(); - - String subject; - - String body; - - boolean isHtml; - - @Builder.Default - Map model = new HashMap<>(); - - @Builder.Default - Map attachments = new HashMap<>(); - - public static MailDraftBuilder builder(String from, List to) { - return mailDraftBuilder().from(from).to(to).subject("").body("").isHtml(false).attachments(new HashMap<>()); - } - - public static class MailDraftBuilder { - } - -} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/mail/interfaces/IMailAttemptService.java b/application-engine/src/main/java/com/netgrif/application/engine/mail/interfaces/IMailAttemptService.java deleted file mode 100644 index 148322c960f..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/mail/interfaces/IMailAttemptService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.netgrif.application.engine.mail.interfaces; - -public interface IMailAttemptService { - - void mailAttempt(String key); - - boolean isBlocked(String key); -} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/mail/interfaces/IMailService.java b/application-engine/src/main/java/com/netgrif/application/engine/mail/interfaces/IMailService.java deleted file mode 100644 index 5080ba2a478..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/mail/interfaces/IMailService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.netgrif.application.engine.mail.interfaces; - -import com.netgrif.application.engine.objects.auth.domain.RegisteredUser; -import com.netgrif.application.engine.mail.domain.MailDraft; -import freemarker.template.TemplateException; -import jakarta.mail.MessagingException; - -import java.io.IOException; - -public interface IMailService { - - void sendRegistrationEmail(RegisteredUser user) throws IOException, TemplateException, MessagingException; - - void sendPasswordResetEmail(RegisteredUser user) throws IOException, TemplateException, MessagingException; - - void testConnection(); - - void sendMail(MailDraft mailDraft) throws IOException, TemplateException, MessagingException; -} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/mail/throwables/NoEmailTypeDefinedException.java b/application-engine/src/main/java/com/netgrif/application/engine/mail/throwables/NoEmailTypeDefinedException.java deleted file mode 100644 index 1a6324b2eda..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/mail/throwables/NoEmailTypeDefinedException.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.netgrif.application.engine.mail.throwables; - -public class NoEmailTypeDefinedException extends RuntimeException { - - public NoEmailTypeDefinedException(String errorMessage) { - super(errorMessage); - } -} diff --git a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/MailRunner.java b/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/MailRunner.java deleted file mode 100644 index 5ed60b86192..00000000000 --- a/application-engine/src/main/java/com/netgrif/application/engine/startup/runner/MailRunner.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.netgrif.application.engine.startup.runner; - -import com.netgrif.application.engine.mail.interfaces.IMailService; -import com.netgrif.application.engine.startup.ApplicationEngineStartupRunner; -import com.netgrif.application.engine.startup.annotation.RunnerOrder; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.ApplicationArguments; -import org.springframework.context.annotation.Profile; -import org.springframework.stereotype.Component; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -@Slf4j -@Component -@RunnerOrder(170) -@Profile("!test") -@RequiredArgsConstructor -public class MailRunner implements ApplicationEngineStartupRunner { - - private final IMailService service; - - @Override - public void run(ApplicationArguments strings) throws Exception { - log.info("Starting test for mail connection"); - host(); - service.testConnection(); - } - - private void host() throws UnknownHostException { - log.info("HOST ADDRESS: {}", InetAddress.getLocalHost().getHostAddress()); - log.info("HOST NAME: {}", InetAddress.getLocalHost().getHostName()); - } - -} diff --git a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy index cc437f9fda8..35fd3457cb8 100644 --- a/application-engine/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy +++ b/application-engine/src/test/groovy/com/netgrif/application/engine/auth/AuthenticationControllerTest.groovy @@ -7,13 +7,11 @@ import com.netgrif.application.engine.auth.service.AuthorityService import com.netgrif.application.engine.auth.service.UserService import com.netgrif.application.engine.TestHelper import com.netgrif.application.engine.objects.auth.domain.Authority -import com.netgrif.application.engine.objects.auth.domain.IUser; -import com.netgrif.application.engine.objects.auth.domain.User +import com.netgrif.application.engine.objects.auth.domain.IUser import com.netgrif.application.engine.auth.web.AuthenticationController import com.netgrif.application.engine.auth.web.requestbodies.NewUserRequest import com.netgrif.application.engine.auth.web.requestbodies.RegistrationRequest import com.netgrif.application.engine.importer.service.Importer -import com.netgrif.application.engine.mail.EmailType import com.netgrif.application.engine.objects.petrinet.domain.VersionType import com.netgrif.application.engine.objects.petrinet.domain.roles.ProcessRole import com.netgrif.application.engine.petrinet.service.interfaces.IPetriNetService diff --git a/application-engine/src/test/java/com/netgrif/application/engine/MailSenderServiceTest.java b/application-engine/src/test/java/com/netgrif/application/engine/MailSenderServiceTest.java deleted file mode 100644 index 6ce76b7318e..00000000000 --- a/application-engine/src/test/java/com/netgrif/application/engine/MailSenderServiceTest.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.netgrif.application.engine; - -import com.icegreen.greenmail.configuration.GreenMailConfiguration; -import com.icegreen.greenmail.util.GreenMail; -import com.icegreen.greenmail.util.ServerSetup; -import com.netgrif.application.engine.objects.auth.domain.User; -import com.netgrif.application.engine.mail.EmailType; -import com.netgrif.application.engine.mail.domain.MailDraft; -import com.netgrif.application.engine.mail.interfaces.IMailService; -import freemarker.template.TemplateException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit.jupiter.SpringExtension; - -import jakarta.mail.MessagingException; -import jakarta.mail.internet.MimeMessage; -import java.io.File; -import java.io.IOException; -import java.util.Collections; - -@SpringBootTest -@ActiveProfiles({"test"}) -@ExtendWith(SpringExtension.class) -public class MailSenderServiceTest { - - static final String FROM = "test@example.com"; - static final String RECIPIENT = "userTest@netgrif.com"; - static final String TOKEN = "čšňť"; - - @Autowired - private IMailService service; - - private GreenMail smtpServer; - - @BeforeEach - public void before() { - smtpServer = new GreenMail(new ServerSetup(2525, null, "smtp")).withConfiguration(GreenMailConfiguration.aConfig().withDisabledAuthentication()); - smtpServer.start(); - } - - @Test - public void testSend() throws Exception { - User user = new com.netgrif.application.engine.adapter.spring.auth.domain.User(); - user.setUsername(RECIPIENT); - user.setEmail(RECIPIENT); - user.setPassword(""); - service.sendRegistrationEmail(user); - - MimeMessage[] messages = smtpServer.getReceivedMessages(); - - assertMessageReceived(messages); - } - - @Test - public void testMailDraft() throws IOException, TemplateException, MessagingException { - File file = new File("file.txt"); - file.createNewFile(); - - MailDraft draft = MailDraft.builder(FROM, Collections.singletonList(RECIPIENT)) - .cc(Collections.singletonList("cc@netgrif.com")) - .bcc(Collections.singletonList("bcc@netgrif.com")) - .subject("Subject draft") - .body("This is body and this is value ${value}") - .model(Collections.singletonMap("value", 125)) - .attachments(Collections.singletonMap("file", file)).build(); - service.sendMail(draft); - - MimeMessage[] messages = smtpServer.getReceivedMessages(); - assertMessageDraftReceived(messages); - } - - @AfterEach - public void after() { - smtpServer.stop(); - } - - private void assertMessageReceived(MimeMessage[] messages) throws MessagingException { - assert messages.length > 0; - - MimeMessage message = messages[0]; - - assert "test@example.com".equalsIgnoreCase(message.getFrom()[0].toString()); - assert EmailType.REGISTRATION.getSubject().equalsIgnoreCase(message.getSubject()); - } - - private void assertMessageDraftReceived(MimeMessage[] messages) throws MessagingException, IOException { - assert messages.length > 0; - MimeMessage message = messages[0]; - assert "test@example.com".equalsIgnoreCase(message.getFrom()[0].toString()); - assert "Subject draft".equalsIgnoreCase(message.getSubject()); - } -} diff --git a/docs/javadoc/com/netgrif/application/engine/mail/MailService.html b/docs/javadoc/com/netgrif/application/engine/mail/MailService.html index 1eaffdc4ef7..9c7534f2ef5 100644 --- a/docs/javadoc/com/netgrif/application/engine/mail/MailService.html +++ b/docs/javadoc/com/netgrif/application/engine/mail/MailService.html @@ -257,7 +257,7 @@

Method Summary

protected javax.mail.internet.MimeMessage -buildEmail​(MailDraft draft) +buildEmail​(MailDraft draft)   @@ -267,7 +267,7 @@

Method Summary

void -sendMail​(MailDraft mailDraft) +sendMail​(MailDraft mailDraft)   @@ -514,7 +514,7 @@

testConnection

- +
    @@ -526,7 +526,7 @@

    sendMail

    freemarker.template.TemplateException
    Specified by:
    -
    sendMail in interface IMailService
    +
    sendMail in interface IMailService
    Throws:
    javax.mail.MessagingException
    java.io.IOException
    @@ -534,7 +534,7 @@

    sendMail

- +
    diff --git a/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.MailDraftBuilder.html b/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.MailDraftBuilder.html index 676d05c4f15..ef814a1b263 100644 --- a/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.MailDraftBuilder.html +++ b/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.MailDraftBuilder.html @@ -119,7 +119,7 @@

    Class MailDraft.MailD
  • java.lang.Object
    • -
    • com.netgrif.application.engine.mail.domain.MailDraft.MailDraftBuilder
    • +
    • com.netgrif.application.engine.objects.mail.MailDraft.MailDraftBuilder
diff --git a/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.html b/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.html index 723ec02ee9c..7c7265153bd 100644 --- a/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.html +++ b/docs/javadoc/com/netgrif/application/engine/mail/domain/MailDraft.html @@ -125,7 +125,7 @@

Class MailDraft

  • java.lang.Object
    • -
    • com.netgrif.application.engine.mail.domain.MailDraft
    • +
    • com.netgrif.application.engine.objects.mail.MailDraft
  • diff --git a/docs/javadoc/com/netgrif/application/engine/mail/domain/class-use/MailDraft.MailDraftBuilder.html b/docs/javadoc/com/netgrif/application/engine/mail/domain/class-use/MailDraft.MailDraftBuilder.html index 48ecfa990c0..4d3c4bbb4ca 100644 --- a/docs/javadoc/com/netgrif/application/engine/mail/domain/class-use/MailDraft.MailDraftBuilder.html +++ b/docs/javadoc/com/netgrif/application/engine/mail/domain/class-use/MailDraft.MailDraftBuilder.html @@ -3,7 +3,7 @@ -Uses of Class com.netgrif.application.engine.mail.domain.MailDraft.MailDraftBuilder (NETGRIF Application Engine 6.4.0 API) +Uses of Class com.netgrif.application.engine.objects.mail.MailDraft.MailDraftBuilder (NETGRIF Application Engine 6.4.0 API) @@ -22,7 +22,7 @@