Skip to content

Commit

Permalink
[NOISSUE]
Browse files Browse the repository at this point in the history
rework wiring for autoconfiguration of mail
  • Loading branch information
jj committed Feb 20, 2019
1 parent ff8e064 commit 2c0b6bb
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
package edu.internet2.tier.shibboleth.admin.ui.configuration;
package edu.internet2.tier.shibboleth.admin.ui.configuration.auto;

import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository;
import edu.internet2.tier.shibboleth.admin.ui.service.EmailService;
import edu.internet2.tier.shibboleth.admin.ui.service.EmailServiceImpl;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -24,6 +28,8 @@
*/
@Configuration
@ConfigurationProperties("shibui.mail")
@AutoConfigureAfter(MailSenderAutoConfiguration.class)
@ConditionalOnBean(JavaMailSender.class)
public class EmailConfiguration {

private static final String EMAIL_TEMPLATE_ENCODING = "UTF-8";
Expand All @@ -43,7 +49,7 @@ public class EmailConfiguration {
@Setter
private String systemEmailAddress = "doNotReply@shibui.org";

@Autowired(required = false)
@Autowired
private JavaMailSender javaMailSender;

@Autowired
Expand Down Expand Up @@ -97,16 +103,12 @@ private ITemplateResolver htmlTemplateResolver() {
}

@Bean
public Optional<EmailService> emailService() {
if (this.javaMailSender != null) {
return Optional.of(new EmailServiceImpl(javaMailSender,
emailMessageSource(),
textEmailTemplateEngine(),
htmlEmailTemplateEngine(),
systemEmailAddress,
userRepository));
} else {
return Optional.empty();
}
public EmailService emailService() {
return new EmailServiceImpl(javaMailSender,
emailMessageSource(),
textEmailTemplateEngine(),
htmlEmailTemplateEngine(),
systemEmailAddress,
userRepository);
}
}
2 changes: 1 addition & 1 deletion backend/src/main/resources/META-INF/spring.factories
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.springframework.boot.env.EnvironmentPostProcessor=\
edu.internet2.tier.shibboleth.admin.ui.configuration.postprocessors.IdpHomeValueSettingEnvironmentPostProcessor
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
edu.internet2.tier.shibboleth.admin.ui.configuration.auto.WebSecurityConfig
edu.internet2.tier.shibboleth.admin.ui.configuration.auto.WebSecurityConfig,edu.internet2.tier.shibboleth.admin.ui.configuration.auto.EmailConfiguration
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package edu.internet2.tier.shibboleth.admin.ui.service

import edu.internet2.tier.shibboleth.admin.ui.configuration.CoreShibUiConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.DevConfig
import edu.internet2.tier.shibboleth.admin.ui.configuration.EmailConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.auto.EmailConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.InternationalizationConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.SearchConfiguration
import edu.internet2.tier.shibboleth.admin.ui.configuration.TestConfiguration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ public class AddNewUserFilter implements Filter {

private UserRepository userRepository;
private RoleRepository roleRepository;
private EmailService emailService;
private Optional<EmailService> emailService;

private Pac4jConfigurationProperties pac4jConfigurationProperties;

private Pac4jConfigurationProperties.SAML2ProfileMapping saml2ProfileMapping;

public AddNewUserFilter(Pac4jConfigurationProperties pac4jConfigurationProperties, UserRepository userRepository, RoleRepository roleRepository, EmailService emailService) {
public AddNewUserFilter(Pac4jConfigurationProperties pac4jConfigurationProperties, UserRepository userRepository, RoleRepository roleRepository, Optional<EmailService> emailService) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
this.emailService = emailService;
Expand Down Expand Up @@ -85,11 +85,13 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
User user;
if (!persistedUser.isPresent()) {
user = buildAndPersistNewUserFromProfile(profile);
try {
emailService.sendNewUserMail(username);
} catch (MessagingException e) {
logger.warn(String.format("Unable to send new user email for user [%s]", username), e);
}
emailService.ifPresent(e -> {
try {
e.sendNewUserMail(username);
} catch (MessagingException e1) {
logger.warn(String.format("Unable to send new user email for user [%s]", username), e);
}
});
} else {
user = persistedUser.get();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package net.unicon.shibui.pac4j;

import edu.internet2.tier.shibboleth.admin.ui.configuration.auto.EmailConfiguration;
import edu.internet2.tier.shibboleth.admin.ui.security.repository.RoleRepository;
import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository;
import edu.internet2.tier.shibboleth.admin.ui.service.EmailService;
import org.pac4j.core.config.Config;
import org.pac4j.springframework.security.web.CallbackFilter;
import org.pac4j.springframework.security.web.SecurityFilter;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand All @@ -17,11 +19,15 @@
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
import org.springframework.security.web.firewall.StrictHttpFirewall;

import javax.swing.text.html.Option;
import java.util.Optional;

@Configuration
@AutoConfigureOrder(-1)
@AutoConfigureAfter(EmailConfiguration.class)
public class WebSecurity {
@Bean("webSecurityConfig")
public WebSecurityConfigurerAdapter webSecurityConfigurerAdapter(final Config config, UserRepository userRepository, RoleRepository roleRepository, EmailService emailService, Pac4jConfigurationProperties pac4jConfigurationProperties) {
public WebSecurityConfigurerAdapter webSecurityConfigurerAdapter(final Config config, UserRepository userRepository, RoleRepository roleRepository, Optional<EmailService> emailService, Pac4jConfigurationProperties pac4jConfigurationProperties) {
return new Pac4jWebSecurityConfigurerAdapter(config, userRepository, roleRepository, emailService, pac4jConfigurationProperties);
}

Expand Down Expand Up @@ -57,10 +63,10 @@ public static class Pac4jWebSecurityConfigurerAdapter extends WebSecurityConfigu
private final Config config;
private UserRepository userRepository;
private RoleRepository roleRepository;
private EmailService emailService;
private Optional<EmailService> emailService;
private Pac4jConfigurationProperties pac4jConfigurationProperties;

public Pac4jWebSecurityConfigurerAdapter(final Config config, UserRepository userRepository, RoleRepository roleRepository, EmailService emailService, Pac4jConfigurationProperties pac4jConfigurationProperties) {
public Pac4jWebSecurityConfigurerAdapter(final Config config, UserRepository userRepository, RoleRepository roleRepository, Optional<EmailService> emailService, Pac4jConfigurationProperties pac4jConfigurationProperties) {
this.config = config;
this.userRepository = userRepository;
this.roleRepository = roleRepository;
Expand Down

0 comments on commit 2c0b6bb

Please sign in to comment.