#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.services;
import nu.localhost.tapestry5.springsecurity.services.RequestInvocationDefinition;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.Configuration;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.OrderedConfiguration;
import org.apache.tapestry5.ioc.ServiceBinder;
import org.apache.tapestry5.ioc.annotations.InjectService;
import org.apache.tapestry5.ioc.annotations.SubModule;
import org.apache.tapestry5.services.AliasContribution;
import org.springframework.security.providers.AuthenticationProvider;
import org.springframework.security.providers.encoding.PasswordEncoder;
import org.springframework.security.providers.encoding.ShaPasswordEncoder;
import org.springframework.security.userdetails.UserDetailsService;
@SubModule( { ServiceModule.class })
public final class AppModule {
private AppModule() {}
public static void contributeApplicationDefaults(
MappedConfiguration<String, String> configuration) {
// general config
configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
configuration.add(SymbolConstants.PRODUCTION_MODE, System.getProperty("production.mode", "false"));
// Spring Security config
configuration.add("spring-security.loginform.url", "/login");
configuration.add("spring-security.check.url", "/security_check");
configuration.add("spring-security.failure.url", "/loginfailed");
}
public static void contributeFilterSecurityInterceptor(
Configuration<RequestInvocationDefinition> configuration) {
// Login and about page are the only ones allowed for anonymous users
// configuration.add(new RequestInvocationDefinition("/loginfailed", "ROLE_ANONYMOUS"));
// configuration.add(new RequestInvocationDefinition("/security_check", "ROLE_ANONYMOUS"));
// configuration.add(new RequestInvocationDefinition("/login", "ROLE_ANONYMOUS"));
// configuration.add(new RequestInvocationDefinition("/favicon.ico", "ROLE_ANONYMOUS,ROLE_USER"));
// configuration.add(new RequestInvocationDefinition("/about", "ROLE_ANONYMOUS,ROLE_USER"));
// configuration.add(new RequestInvocationDefinition("/assets/**", "ROLE_ANONYMOUS,ROLE_USER"));
// configuration.add(new RequestInvocationDefinition("/**", "ROLE_USER"));
configuration.add(new RequestInvocationDefinition("/**", "ROLE_ANONYMOUS,ROLE_USER"));
}
public static void bind(ServiceBinder binder){
binder.bind(UserDetailsService.class, UserDetailsServiceImpl.class);
}
public static void contributeAlias(Configuration<AliasContribution<PasswordEncoder>> configuration ) {
configuration.add( AliasContribution.create(PasswordEncoder.class, new ShaPasswordEncoder() ) );
}
public static void contributeProviderManager(
OrderedConfiguration<AuthenticationProvider> configuration,
@InjectService("DaoAuthenticationProvider") AuthenticationProvider daoAuthenticationProvider) {
configuration.add("daoAuthenticationProvider", daoAuthenticationProvider);
}
}