Skip to content

Commit ff9dff8

Browse files
author
phasenraum2010
committed
ongoing work on #34
1 parent d609daf commit ff9dff8

29 files changed

+1027
-0
lines changed
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package org.woehlke.humanrights.digital.defense.defcon1.config;
2+
3+
import org.neo4j.ogm.session.SessionFactory;
4+
import org.springframework.boot.autoconfigure.data.neo4j.Neo4jProperties;
5+
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
6+
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
7+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
import org.springframework.data.neo4j.repository.config.EnableNeo4jRepositories;
11+
import org.springframework.data.neo4j.transaction.Neo4jTransactionManager;
12+
import org.springframework.data.redis.connection.RedisConnectionFactory;
13+
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
14+
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
15+
import org.springframework.data.redis.core.RedisTemplate;
16+
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
17+
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
18+
import org.springframework.transaction.annotation.EnableTransactionManagement;
19+
20+
/**
21+
* Created by tw on 25.06.18.
22+
*/
23+
@Configuration
24+
@EnableNeo4jRepositories(
25+
basePackages = "org.woehlke.humanrights.digital.defense.defcon1.storage.neo4j.repository",
26+
transactionManagerRef = "neo4jTransactionManager"
27+
)
28+
@EnableRedisRepositories(
29+
basePackages = "org.woehlke.humanrights.digital.defense.defcon1.storage.redis.repository"
30+
)
31+
@EnableTransactionManagement
32+
@EnableConfigurationProperties({
33+
JpaProperties.class,
34+
Neo4jProperties.class,
35+
DataSourceProperties.class
36+
})
37+
public class StorageConfig {
38+
39+
@Bean
40+
public Neo4jTransactionManager neo4jTransactionManager(SessionFactory sessionFactory){
41+
return new Neo4jTransactionManager(sessionFactory);
42+
}
43+
44+
@Bean
45+
public JedisConnectionFactory jedisConnFactory() {
46+
JedisConnectionFactory fac = new JedisConnectionFactory(new RedisStandaloneConfiguration());
47+
return fac;
48+
}
49+
50+
@Bean
51+
public RedisTemplate redisTemplate(){
52+
RedisTemplate redisTemplate = new RedisTemplate();
53+
//redisTemplate.setEnableTransactionSupport(true);
54+
return redisTemplate;
55+
}
56+
57+
@Bean
58+
public RedisConnectionFactory redisConnectionFactory(JedisConnectionFactory jedisConnFactory) {
59+
return (RedisConnectionFactory) jedisConnFactory;
60+
}
61+
62+
@Bean
63+
public RedisOperationsSessionRepository sessionRepository(RedisTemplate redisTemplate){
64+
return new RedisOperationsSessionRepository(redisTemplate);
65+
}
66+
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.woehlke.humanrights.digital.defense.defcon1.config;
2+
3+
4+
import org.apache.commons.logging.Log;
5+
import org.apache.commons.logging.LogFactory;
6+
import org.neo4j.ogm.session.SessionFactory;
7+
import org.springframework.boot.autoconfigure.data.neo4j.Neo4jProperties;
8+
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
9+
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
10+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
11+
import org.springframework.context.annotation.Bean;
12+
import org.springframework.context.annotation.Configuration;
13+
import org.springframework.context.annotation.Profile;
14+
15+
16+
/**
17+
* @author Natural-Born-Coder
18+
*/
19+
@Configuration
20+
@Profile({
21+
"dev",
22+
"int",
23+
"test",
24+
"prod",
25+
"travis"
26+
})
27+
@EnableConfigurationProperties({
28+
JpaProperties.class,
29+
Neo4jProperties.class,
30+
DataSourceProperties.class
31+
})
32+
public class StorageConfigurationDistributed {
33+
34+
35+
private final String packages[] = {
36+
"org.woehlke.neo4j.example.storage.neo4j.domain"
37+
};
38+
39+
40+
@Bean
41+
public org.neo4j.ogm.config.Configuration configuration(Neo4jProperties neo4jProperties) {
42+
return neo4jProperties.createConfiguration();
43+
}
44+
45+
@Bean
46+
public SessionFactory sessionFactory(org.neo4j.ogm.config.Configuration configuration ) {
47+
return new SessionFactory(configuration,packages);
48+
}
49+
50+
private static final Log LOGGER = LogFactory.getLog(StorageConfigurationDistributed.class);
51+
52+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
package org.woehlke.humanrights.digital.defense.defcon1.config;
2+
3+
import org.apache.commons.logging.Log;
4+
import org.apache.commons.logging.LogFactory;
5+
import org.neo4j.graphdb.GraphDatabaseService;
6+
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
7+
import org.neo4j.ogm.driver.Driver;
8+
import org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver;
9+
import org.neo4j.ogm.session.SessionFactory;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.boot.autoconfigure.data.neo4j.Neo4jProperties;
12+
import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
13+
import org.springframework.boot.autoconfigure.orm.jpa.JpaProperties;
14+
import org.springframework.context.annotation.Bean;
15+
import org.springframework.context.annotation.Configuration;
16+
import org.springframework.context.annotation.Profile;
17+
import org.woehlke.humanrights.digital.defense.defcon1.config.helper.Neo4jConfigurationLogger;
18+
19+
import java.io.File;
20+
import java.util.List;
21+
22+
23+
/**
24+
* @author Natural-Born-Coder
25+
*/
26+
@Configuration
27+
@Profile({
28+
"default",
29+
"devembedded",
30+
"intembedded",
31+
"testembedded",
32+
"prodembedded",
33+
"travisembedded"
34+
})
35+
public class StorageConfigurationEmbedded {
36+
37+
private final String packages[] = { "org.woehlke.neo4j.example.storage.neo4j.domain" };
38+
39+
private final String graphDbFileName = "target/var/graphDb";
40+
41+
42+
@Bean
43+
public Driver neo4jDriver() {
44+
//storageProperties.logDebug();
45+
//allProperties.logDebug();
46+
LOGGER.debug(" Neo4J Driver Configuration = Embedded : " + this.graphDbFileName + " ");
47+
LOGGER.debug("-------------------------------------------------------------");
48+
File db = new File( graphDbFileName );
49+
GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase( db );
50+
Driver neo4jDriver = new EmbeddedDriver(graphDb);
51+
if (neo4jDriver == null) {
52+
LOGGER.error("");
53+
LOGGER.error("-------------------------------------------------------------");
54+
LOGGER.error(" driver == null ");
55+
LOGGER.error("-------------------------------------------------------------");
56+
LOGGER.error("");
57+
} else {
58+
org.neo4j.ogm.config.Configuration configuration = neo4jDriver.getConfiguration();
59+
if(configuration != null){
60+
List<String> logInfos = neo4jConfigurationLogger.configurationLogger(configuration);
61+
for (String logInfo:logInfos) {
62+
LOGGER.debug(logInfo);
63+
}
64+
}
65+
}
66+
return neo4jDriver;
67+
}
68+
69+
@Bean
70+
public SessionFactory sessionFactory(Driver neo4jDriver) {
71+
return new SessionFactory(neo4jDriver , packages );
72+
}
73+
74+
75+
76+
@Autowired
77+
private Neo4jConfigurationLogger neo4jConfigurationLogger;
78+
79+
@Autowired
80+
private JpaProperties jpaProperties;
81+
82+
@Autowired
83+
private DataSourceProperties dataSourceProperties;
84+
85+
@Autowired
86+
private Neo4jProperties neo4jProperties;
87+
88+
89+
private static final Log LOGGER = LogFactory.getLog(StorageConfigurationEmbedded.class);
90+
}
Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
package org.woehlke.humanrights.digital.defense.defcon1.config;
2+
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.boot.context.properties.EnableConfigurationProperties;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
8+
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
9+
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
10+
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
11+
import org.springframework.security.web.authentication.RememberMeServices;
12+
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
13+
import org.springframework.session.data.redis.RedisOperationsSessionRepository;
14+
import org.springframework.session.security.SpringSessionBackedSessionRegistry;
15+
import org.springframework.session.security.web.authentication.SpringSessionRememberMeServices;
16+
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
17+
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
18+
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
19+
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
20+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
21+
import org.woehlke.humanrights.digital.defense.defcon1.config.properties.ApplicationProperties;
22+
23+
//import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
24+
25+
26+
/**
27+
* Created by tw on 24.06.18.
28+
*/
29+
@Configuration
30+
@EnableWebMvc
31+
@EnableWebSecurity
32+
//@EnableRedisHttpSession
33+
//@EnableSpringDataWebSupport
34+
@EnableConfigurationProperties({
35+
//AllProperties.class,
36+
//StorageProperties.class,
37+
ApplicationProperties.class
38+
})
39+
public class WebMvcWebSecurityConfig extends WebSecurityConfigurerAdapter implements WebMvcConfigurer{
40+
41+
@Override
42+
public void addViewControllers(ViewControllerRegistry registry) {
43+
registry.addViewController("/").setViewName("redirect:/welcome");
44+
registry.addViewController("/adm").setViewName("redirect:/adm/dashboard");
45+
}
46+
47+
@Override
48+
public void addResourceHandlers(ResourceHandlerRegistry registry) {
49+
registry.addResourceHandler("/css/*").addResourceLocations("classpath:/public/css/");
50+
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/public/css/");
51+
registry.addResourceHandler("/icon/*").addResourceLocations("classpath:/public/icon/");
52+
registry.addResourceHandler("/icon/**").addResourceLocations("classpath:/public/icon/");
53+
registry.addResourceHandler("/img/*").addResourceLocations("classpath:/public/img/");
54+
registry.addResourceHandler("/img/**").addResourceLocations("classpath:/public/img/");
55+
registry.addResourceHandler("/js/*").addResourceLocations("classpath:/public/js/");
56+
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/public/js/");
57+
registry.addResourceHandler("/map-icons/*").addResourceLocations("classpath:/public/map-icons/");
58+
registry.addResourceHandler("/map-icons/**").addResourceLocations("classpath:/public/map-icons/");
59+
registry.addResourceHandler("/webjars/*").addResourceLocations("/webjars/");
60+
registry.addResourceHandler("/webjars/**").addResourceLocations("/webjars/");
61+
}
62+
63+
@Bean
64+
public MethodValidationPostProcessor methodValidationPostProcessor() {
65+
return new MethodValidationPostProcessor();
66+
}
67+
68+
@Bean
69+
public SpringSessionBackedSessionRegistry sessionRegistry() {
70+
return new SpringSessionBackedSessionRegistry<>(this.sessionRepository);
71+
}
72+
73+
74+
/*
75+
@Override
76+
protected void configure(HttpSecurity http) throws Exception {
77+
http
78+
.authorizeRequests()
79+
.antMatchers(
80+
applicationProperties.getWebSecurityConfigPublicPathsAsArray()
81+
)
82+
.permitAll()
83+
.anyRequest().authenticated()
84+
.and()
85+
.formLogin()
86+
.loginPage(applicationProperties.getLoginPage())
87+
.failureForwardUrl(applicationProperties.getFailureForwardUrl())
88+
.defaultSuccessUrl(applicationProperties.getDefaultSuccessUrl())
89+
.permitAll()
90+
.and()
91+
.rememberMe()
92+
.rememberMeServices(rememberMeServices())
93+
.and()
94+
.logout()
95+
.logoutRequestMatcher(new AntPathRequestMatcher(applicationProperties.getLogoutRequestMatcher()))
96+
.logoutSuccessUrl(applicationProperties.getLogoutSuccessUrl())
97+
.permitAll();
98+
}
99+
100+
@Autowired
101+
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
102+
String loginUsername = applicationProperties.getLoginUsername();
103+
String loginPassword = applicationProperties.getLoginPassword();
104+
String loginRole = applicationProperties.getLoginRole();
105+
auth
106+
.inMemoryAuthentication()
107+
.withUser(loginUsername)
108+
.password(loginPassword)
109+
.roles(loginRole);
110+
}
111+
*/
112+
113+
@Override
114+
protected void configure(HttpSecurity http) throws Exception {
115+
http
116+
.authorizeRequests()
117+
.antMatchers(
118+
applicationProperties.getWebSecurityConfigPublicPathsAsArray()
119+
)
120+
.permitAll()
121+
.anyRequest().authenticated()
122+
.and()
123+
.formLogin()
124+
.loginPage("/login")
125+
.failureForwardUrl("/login")
126+
.defaultSuccessUrl("/adm")
127+
.permitAll()
128+
.and()
129+
.rememberMe()
130+
.rememberMeServices(rememberMeServices())
131+
.and()
132+
.logout()
133+
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
134+
.logoutSuccessUrl("/logout_success")
135+
.permitAll();
136+
}
137+
138+
@Autowired
139+
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
140+
String user = "user" ; //applicationProperties.getLoginUsername();
141+
String pwd = "password"; // applicationProperties.getLoginPassword();
142+
String role = "USER";
143+
auth
144+
.inMemoryAuthentication()
145+
.withUser(user).password(pwd).roles(role);
146+
}
147+
148+
@Bean
149+
public RememberMeServices rememberMeServices() {
150+
SpringSessionRememberMeServices rememberMeServices =
151+
new SpringSessionRememberMeServices();
152+
// optionally customize
153+
rememberMeServices.setAlwaysRemember(true);
154+
return rememberMeServices;
155+
}
156+
157+
@Autowired
158+
private RedisOperationsSessionRepository sessionRepository;
159+
160+
@Autowired
161+
private ApplicationProperties applicationProperties;
162+
163+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.woehlke.humanrights.digital.defense.defcon1.config.helper;
2+
3+
import java.util.List;
4+
5+
/**
6+
* @author Natural-Born-Coder
7+
*/
8+
public interface Neo4jConfigurationLogger {
9+
10+
List<String> configurationLogger(org.neo4j.ogm.config.Configuration configuration);
11+
}

0 commit comments

Comments
 (0)