Search in sources :

Example 6 with Email

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;
}
Also used : Email(io.gravitee.am.common.email.Email) FreeMarkerTemplateUtils.processTemplateIntoString(org.springframework.ui.freemarker.FreeMarkerTemplateUtils.processTemplateIntoString) EmailBuilder(io.gravitee.am.common.email.EmailBuilder)

Example 7 with 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();
}
Also used : Email(io.gravitee.am.common.email.Email) TemplateException(freemarker.template.TemplateException) NotificationDefinition(io.gravitee.node.api.notifier.NotificationDefinition) IOException(java.io.IOException)

Example 8 with Email

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);
}
Also used : Email(io.gravitee.am.common.email.Email)

Example 9 with 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));
        }
    }
}
Also used : EmailAuditBuilder(io.gravitee.am.service.reporter.builder.EmailAuditBuilder) Email(io.gravitee.am.common.email.Email) TemplateException(freemarker.template.TemplateException) IOException(java.io.IOException)

Example 10 with Email

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;
}
Also used : Email(io.gravitee.am.common.email.Email) StringReader(java.io.StringReader) FreeMarkerTemplateUtils.processTemplateIntoString(org.springframework.ui.freemarker.FreeMarkerTemplateUtils.processTemplateIntoString) Template(freemarker.template.Template)

Aggregations

Email (io.gravitee.am.common.email.Email)13 Template (freemarker.template.Template)3 TemplateException (freemarker.template.TemplateException)3 EmailBuilder (io.gravitee.am.common.email.EmailBuilder)3 Membership (io.gravitee.am.model.Membership)3 User (io.gravitee.am.model.User)3 IOException (java.io.IOException)3 StringReader (java.io.StringReader)3 FreeMarkerTemplateUtils.processTemplateIntoString (org.springframework.ui.freemarker.FreeMarkerTemplateUtils.processTemplateIntoString)3 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)2 DomainNotifierServiceImpl (io.gravitee.am.management.service.impl.DomainNotifierServiceImpl)2 EmailNotifierConfiguration (io.gravitee.am.management.service.impl.notifications.EmailNotifierConfiguration)2 TYPE_EMAIL_NOTIFIER (io.gravitee.am.management.service.impl.notifications.NotificationDefinitionUtils.TYPE_EMAIL_NOTIFIER)2 TYPE_UI_NOTIFIER (io.gravitee.am.management.service.impl.notifications.NotificationDefinitionUtils.TYPE_UI_NOTIFIER)2 Certificate (io.gravitee.am.model.Certificate)2 Domain (io.gravitee.am.model.Domain)2 Environment (io.gravitee.am.model.Environment)2 ReferenceType (io.gravitee.am.model.ReferenceType)2 Role (io.gravitee.am.model.Role)2 Page (io.gravitee.am.model.common.Page)2