Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <context:component-scan base-package="your.package.name" />
- <context:component-scan base-package="your.package.name" />
- <tx:annotation-driven transaction-manager="transactionManager"/>
- <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
- <bean id="transactionManager"
- class="org.springframework.orm.jpa.JpaTransactionManager"
- p:entityManagerFactory-ref="entityManagerFactory" />
- <bean id="entityManagerFactory"
- class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
- p:persistenceUnitName="persistenceUnitName"> <!-- this comes from persistence.xml -->
- <property name="jpaVendorAdapter">
- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
- </property>
- <property name="jpaProperties">
- <props>
- <prop key="hibernate.hbm2ddl.auto">validate</prop>
- <prop key="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</prop>
- <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQL82Dialect</prop>
- <prop key="hibernate.connection.driver_class">org.postgresql.Driver</prop>
- <prop key="hibernate.connection.url">jdbc:postgresql://localhost:5432/myDB</prop>
- <prop key="hibernate.connection.username">username</prop>
- <prop key="hibernate.connection.password">password</prop>
- <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
- <prop key="hibernate.id.new_generator_mappings">true</prop>
- <prop key="hibernate.show_sql">false</prop>
- <prop key="hibernate.jdbc.batch_size">50</prop>
- <prop key="hibernate.id.new_generator_mappings">true</prop>
- <prop key="hibernate.c3p0.maxSize">100</prop>
- <prop key="hibernate.c3p0.minSize">10</prop>
- <prop key="hibernate.c3p0.acquireIncrement">10</prop>
- <prop key="hibernate.c3p0.idleTestPeriod">300</prop>
- <prop key="hibernate.c3p0.maxStatements">0</prop>
- <prop key="hibernate.c3p0.timeout">1800</prop>
- <prop key="hibernate.c3p0.checkoutTimeout">0</prop>
- <prop key="hibernate.c3p0.preferredTestQuery">SELECT 1;</prop>
- </props>
- </property>
- </bean>
- @SpringBootApplication
- @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
- public class StockServerApplication
- {
- public static void main(String[] args) throws IOException
- {
- // Check if settings exists
- if(!AppSettings.settingsFileExists()){
- AppSettings.writeExampleSettingsFile();
- System.out.println("Settings-file not found. Example file has been written in the root-dirnClosing...");
- System.exit(0);
- }
- AppSettings.initialize();
- if(!AppSettings.isValid()){
- System.exit(0);
- }
- SpringApplication app = new SpringApplication(StockServerApplication.class);
- Properties props = AppSettings.settingsToNativeProperties(AppSettings.applicationSettings);
- props.put("spring.thymeleaf.mode", "LEGACYHTML5");
- props.put("spring.thymeleaf.cache", "false");
- props.put("spring.jpa.database", "default");
- // Debug
- // props.put("debug", "true");
- app.setDefaultProperties(props);
- app.run(args);
- }
- @Autowired
- private AuthorizedUserRepository repo;
- @PostConstruct
- private void createAdmin(){
- AuthorizedUser user = repo.getByUsername("Admin");
- if(user == null){
- // Generate admin-user
- String possiblePasswordCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
- String generatedPassword = RandomStringUtils.random(10, possiblePasswordCharacters);
- user = new AuthorizedUser(null, null, "Admin", generatedPassword, null, AuthorizedUserRole.Admin);
- repo.save(user);
- System.out.println("nnCreated Admin-account with password: " + generatedPassword + "nn");
- }
- }
- }
- @Configuration
- public class SecurityConfiguration extends WebSecurityConfigurerAdapter
- {
- @Autowired
- private AuthenticationFilter filter;
- @Override
- protected void configure(HttpSecurity http) throws Exception
- {
- Settings.ServerSettings set = AppSettings.applicationSettings.getServerSettings();
- if(!set.isUseAuthentication())
- return;
- System.out.println("Initializing security-settings");
- http.csrf().disable().authorizeRequests()
- .antMatchers("/").permitAll()
- .antMatchers("/utils/**").permitAll()
- .antMatchers("/app/**").permitAll()
- .antMatchers("/authorize").permitAll()
- .antMatchers(HttpMethod.POST, "/users/add/*").hasAuthority(AuthorizedUserRole.Admin.toString())
- .antMatchers(HttpMethod.DELETE, "/users/delete/*").hasAuthority(AuthorizedUserRole.Admin.toString())
- .antMatchers(HttpMethod.GET, "/users/all/*").hasAuthority(AuthorizedUserRole.Admin.toString())
- .antMatchers(HttpMethod.PUT, "/users/changerole/*").hasAuthority(AuthorizedUserRole.Admin.toString())
- .anyRequest().authenticated()
- .and()
- .addFilterBefore(filter, UsernamePasswordAuthenticationFilter.class)
- .exceptionHandling()
- .authenticationEntryPoint(new AuthEntryPoint());
- }
- @Bean
- public FilterRegistrationBean authenticationFilterRegistrationBean(){
- FilterRegistrationBean regBean = new FilterRegistrationBean();
- regBean.setFilter(filter);
- regBean.setOrder(1);
- return regBean;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement