diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java index e9e4d33ae..9932a8b48 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/ShibbolethUiApplication.java @@ -58,31 +58,4 @@ void showMetadataResolversResourceIds(ApplicationStartedEvent e) { .forEach(it -> System.out.println(String.format("MetadataResolver [%s: %s]", it.getName(), it.getResourceId()))); } } - - @Component - @Profile("dev") - public static class SampleAdminUsersCreator { - - @Autowired - AdminUserRepository adminUserRepository; - - @Transactional - @EventListener - void createSampleAdminUsers(ApplicationStartedEvent e) { - if(adminUserRepository.count() == 0L) { - AdminRole role = new AdminRole(); - role.setName("ROLE_ADMIN"); - AdminUser user = new AdminUser(); - user.setUsername("admin"); - user.setPassword("{noop}adminpass"); - - //The complexity of managing bi-directional many-to-many. TODO: encapsulate this association - //managing logic into domain model itself - role.getAdmins().add(user); - user.getRoles().add(role); - - adminUserRepository.save(user); - } - } - } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java index 3cd3ca840..35704e39b 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/configuration/auto/WebSecurityConfig.java @@ -1,6 +1,8 @@ package edu.internet2.tier.shibboleth.admin.ui.configuration.auto; import edu.internet2.tier.shibboleth.admin.ui.security.DefaultAuditorAware; +import edu.internet2.tier.shibboleth.admin.ui.security.model.AdminRole; +import edu.internet2.tier.shibboleth.admin.ui.security.model.AdminUser; import edu.internet2.tier.shibboleth.admin.ui.security.repository.AdminUserRepository; import edu.internet2.tier.shibboleth.admin.ui.security.springsecurity.AdminUserService; import org.springframework.beans.factory.annotation.Autowired; @@ -22,10 +24,14 @@ import org.springframework.security.web.firewall.HttpFirewall; import org.springframework.security.web.firewall.StrictHttpFirewall; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.PostConstruct; /** * Web security configuration. - * + *
* Workaround for slashes in URL from [https://stackoverflow.com/questions/48453980/spring-5-0-3-requestrejectedexception-the-request-was-rejected-because-the-url] */ @Configuration @@ -75,7 +81,7 @@ protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth .inMemoryAuthentication() .withUser("user") - .password(passwordEncoder.encode(defaultPassword)) + .password(defaultPassword) .roles("USER"); } else { auth.userDetailsService(adminUserService(adminUserRepository)).passwordEncoder(passwordEncoder); @@ -119,4 +125,32 @@ public void configure(WebSecurity web) throws Exception { } }; } + + @Component + @Profile("dev") + public static class SampleAdminUsersCreator { + + @Autowired + AdminUserRepository adminUserRepository; + + @Transactional + @PostConstruct + public void createSampleAdminUsers() { + if (adminUserRepository.count() == 0L) { + AdminRole role = new AdminRole(); + role.setName("ROLE_ADMIN"); + AdminUser user = new AdminUser(); + user.setUsername("admin"); + user.setPassword("{noop}adminpass"); + + //The complexity of managing bi-directional many-to-many. TODO: encapsulate this association + //managing logic into domain model itself + role.getAdmins().add(user); + user.getRoles().add(role); + + adminUserRepository.save(user); + } + } + } } + diff --git a/backend/src/main/resources/application.properties b/backend/src/main/resources/application.properties index 3e95e06b7..da2082af2 100644 --- a/backend/src/main/resources/application.properties +++ b/backend/src/main/resources/application.properties @@ -4,7 +4,7 @@ # Logging Configuration #logging.config=classpath:log4j2.xml -#logging.level.org.springframework.security=DEBUG +#logging.level.org.springframework.security=INFO logging.level.org.springframework=INFO logging.level.edu.internet2.tier.shibboleth.admin.ui=INFO @@ -49,7 +49,7 @@ shibui.logout-url=/dashboard # spring.profiles.active=default -#shibui.default-password=pass +#shibui.default-password={noop}pass shibui.metadata-sources-ui-schema-location=classpath:metadata-sources-ui-schema.json shibui.entity-attributes-filters-ui-schema-location=classpath:entity-attributes-filters-ui-schema.json