use of io.gravitee.am.common.email.Email in project gravitee-access-management by gravitee-io.
the class EmailServiceImpl method prepareEmail.
private Email prepareEmail(Domain domain, Application client, io.gravitee.am.model.Template template, io.gravitee.am.model.Email emailTemplate, User user) {
Map<String, Object> params = prepareEmailParams(domain, client, user, emailTemplate.getExpiresAfter(), template.redirectUri());
Email email = new EmailBuilder().to(user.getEmail()).from(emailTemplate.getFrom()).fromName(emailTemplate.getFromName()).subject(emailTemplate.getSubject()).template(emailTemplate.getTemplate()).params(params).build();
return email;
}
use of io.gravitee.am.common.email.Email in project gravitee-access-management by gravitee-io.
the class DomainNotifierServiceImpl method buildEmailNotificationDefinition.
private Optional<NotificationDefinition> buildEmailNotificationDefinition(Certificate certificate, Domain domain, User user) {
if (emailNotifierEnabled && !Strings.isNullOrEmpty(user.getEmail())) {
try {
Map<String, Object> data = new NotificationDefinitionUtils.ParametersBuilder().withDomain(domain).withUser(user).withCertificate(certificate).build();
final Email email = emailService.getFinalEmail(domain, null, Template.CERTIFICATE_EXPIRATION, user, data);
EmailNotifierConfiguration notifierConfig = new EmailNotifierConfiguration(this.emailConfiguration);
notifierConfig.setSubject(email.getSubject());
notifierConfig.setBody(email.getContent());
notifierConfig.setTo(user.getEmail());
final NotificationDefinition definition = new NotificationDefinition();
definition.setType(TYPE_EMAIL_NOTIFIER);
definition.setConfiguration(mapper.writeValueAsString(notifierConfig));
definition.setResourceId(certificate.getId());
definition.setResourceType(RESOURCE_TYPE_CERTIFICATE);
definition.setAudienceId(user.getId());
definition.setCron(this.certificateCronExpression);
definition.setData(data);
return Optional.of(definition);
} catch (IOException | TemplateException e) {
LOGGER.warn("Unable to generate email template for certificate expiration", e);
}
} else {
LOGGER.debug("Ignore email notification for certificate {}, email is disabled or email address is missing", certificate.getId());
}
return Optional.empty();
}
use of io.gravitee.am.common.email.Email in project gravitee-access-management by gravitee-io.
the class EmailServiceImpl method getFinalEmail.
@Override
public Email getFinalEmail(Domain domain, Application client, io.gravitee.am.model.Template template, User user, Map<String, Object> params) throws IOException, TemplateException {
// get raw email template
io.gravitee.am.model.Email emailTemplate = emailManager.getEmail(template, ReferenceType.DOMAIN, domain.getId(), user, getDefaultSubject(template), getDefaultExpireAt(template));
// prepare email
Email email = prepareEmail(domain, client, template, emailTemplate, user);
if (email.getParams() != null) {
email.getParams().putAll(params);
} else {
email.setParams(params);
}
// send email
return processEmailTemplate(email);
}
use of io.gravitee.am.common.email.Email in project gravitee-access-management by gravitee-io.
the class EmailServiceImpl method sendEmail.
private void sendEmail(Email email, User user) {
if (enabled) {
try {
final Email emailToSend = processEmailTemplate(email);
emailService.send(emailToSend);
auditService.report(AuditBuilder.builder(EmailAuditBuilder.class).domain(user.getReferenceId()).client(ADMIN_CLIENT).email(email).user(user));
} catch (final Exception ex) {
auditService.report(AuditBuilder.builder(EmailAuditBuilder.class).domain(user.getReferenceId()).client(ADMIN_CLIENT).email(email).throwable(ex));
}
}
}
use of io.gravitee.am.common.email.Email in project gravitee-access-management by gravitee-io.
the class EmailServiceImpl method processEmailTemplate.
private Email processEmailTemplate(Email email) throws IOException, TemplateException {
final Template template = freemarkerConfiguration.getTemplate(email.getTemplate());
final Template plainTextTemplate = new Template("subject", new StringReader(email.getSubject()), freemarkerConfiguration);
// compute email subject
final String subject = processTemplateIntoString(plainTextTemplate, email.getParams());
// compute email content
final String content = processTemplateIntoString(template, email.getParams());
final Email emailToSend = new Email(email);
emailToSend.setSubject(subject);
emailToSend.setContent(content);
return emailToSend;
}
Aggregations