diff --git a/spring-security-custom-permission/README.MD b/spring-security-custom-permission/README.MD
deleted file mode 100644
index d59aea97b4..0000000000
--- a/spring-security-custom-permission/README.MD
+++ /dev/null
@@ -1,7 +0,0 @@
-###The Course
-The "REST With Spring" Classes: http://github.learnspringsecurity.com
-
-###Relevant Articles:
-- [A Custom Security Expression with Spring Security](http://www.baeldung.com/spring-security-create-new-custom-security-expression)
-- [Custom AccessDecisionVoters in Spring Security](http://www.baeldung.com/spring-security-custom-voter)
-- [Spring Security: Authentication with a Database-backed UserDetailsService](http://www.baeldung.com/spring-security-authentication-with-a-database)
diff --git a/spring-security-custom-permission/WebContent/META-INF/MANIFEST.MF b/spring-security-custom-permission/WebContent/META-INF/MANIFEST.MF
deleted file mode 100644
index 254272e1c0..0000000000
--- a/spring-security-custom-permission/WebContent/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path:
-
diff --git a/spring-security-custom-permission/pom.xml b/spring-security-custom-permission/pom.xml
deleted file mode 100644
index 5e1648ebd7..0000000000
--- a/spring-security-custom-permission/pom.xml
+++ /dev/null
@@ -1,303 +0,0 @@
-
-
- 4.0.0
-
- com.baeldung
- spring-security-custom-permission
- 0.0.1-SNAPSHOT
- war
-
- spring-security-custom-permission
- Spring Security custom permission
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 1.4.4.RELEASE
-
-
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
- provided
-
-
-
- org.springframework.boot
- spring-boot-starter-thymeleaf
-
-
-
- org.thymeleaf.extras
- thymeleaf-extras-springsecurity4
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
-
- com.h2database
- h2
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- junit
- junit
- test
-
-
-
- org.hamcrest
- hamcrest-core
- test
-
-
-
- org.hamcrest
- hamcrest-library
- test
-
-
-
- com.jayway.restassured
- rest-assured
- ${rest-assured.version}
- test
-
-
- commons-logging
- commons-logging
-
-
-
-
-
- org.springframework
- spring-test
- test
-
-
-
- org.apache.derby
- derby
- ${derby.version}
-
-
- org.apache.derby
- derbyclient
- ${derby.version}
-
-
- org.apache.derby
- derbynet
- ${derby.version}
-
-
- org.apache.derby
- derbytools
- ${derby.version}
-
-
- taglibs
- standard
- ${taglibs-standard.version}
-
-
- org.springframework.security
- spring-security-taglibs
- ${spring-security-taglibs.version}
-
-
-
- org.springframework.security
- spring-security-core
- ${spring-security-core.version}
-
-
-
- javax.servlet.jsp.jstl
- jstl-api
- ${jstl.version}
-
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- **/*IntegrationTest.java
- **/*LiveTest.java
-
-
-
-
-
-
-
-
- org.codehaus.cargo
- cargo-maven2-plugin
- ${cargo-maven2-plugin.version}
-
- true
-
- tomcat8x
- embedded
-
-
-
-
-
-
- 8082
-
-
-
-
-
-
-
-
-
-
-
- integration
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- integration-test
-
- test
-
-
-
- **/*LiveTest.java
-
-
- **/*IntegrationTest.java
-
-
-
-
-
-
- json
-
-
-
-
-
-
-
-
-
- live
-
-
-
- org.codehaus.cargo
- cargo-maven2-plugin
-
-
- start-server
- pre-integration-test
-
- start
-
-
-
- stop-server
- post-integration-test
-
- stop
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- integration-test
-
- test
-
-
-
- none
-
-
- **/*LiveTest.java
-
-
- cargo
-
-
-
-
-
-
-
-
-
-
-
-
-
- org.baeldung.Application
-
-
-
-
- UTF-8
- 1.8
- 10.13.1.1
- 1.1.2
- 4.2.0.RELEASE
- 4.2.0.RELEASE
-
- 1.2
- 2.4.0
- 1.6.1
-
-
-
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/Application.java b/spring-security-custom-permission/src/main/java/org/baeldung/Application.java
deleted file mode 100644
index 072a6ca4fe..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/Application.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.baeldung;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.context.web.SpringBootServletInitializer;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.FilterType;
-
-@Configuration
-@EnableAutoConfiguration
-@ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.voter.*"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.multiplelogin.*")})
-public class Application extends SpringBootServletInitializer {
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/config/MethodSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/config/MethodSecurityConfig.java
deleted file mode 100644
index c4624e85e0..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/config/MethodSecurityConfig.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.baeldung.config;
-
-import org.baeldung.security.CustomMethodSecurityExpressionHandler;
-import org.baeldung.security.CustomPermissionEvaluator;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.access.expression.method.MethodSecurityExpressionHandler;
-import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
-import org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration;
-
-@Configuration
-@EnableGlobalMethodSecurity(prePostEnabled = true)
-public class MethodSecurityConfig extends GlobalMethodSecurityConfiguration {
-
- @Override
- protected MethodSecurityExpressionHandler createExpressionHandler() {
- // final DefaultMethodSecurityExpressionHandler expressionHandler = new DefaultMethodSecurityExpressionHandler();
- final CustomMethodSecurityExpressionHandler expressionHandler = new CustomMethodSecurityExpressionHandler();
- expressionHandler.setPermissionEvaluator(new CustomPermissionEvaluator());
- return expressionHandler;
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/config/MvcConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/config/MvcConfig.java
deleted file mode 100644
index 9ade60e54c..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/config/MvcConfig.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package org.baeldung.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
-import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-@Configuration
-@EnableWebMvc
-public class MvcConfig extends WebMvcConfigurerAdapter {
-
- public MvcConfig() {
- super();
- }
-
- //
- @Bean
- public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
- return new PropertySourcesPlaceholderConfigurer();
- }
-
- @Override
- public void configureDefaultServletHandling(final DefaultServletHandlerConfigurer configurer) {
- configurer.enable();
- }
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
- registry.addViewController("/").setViewName("forward:/index");
- registry.addViewController("/index");
- }
-
- @Override
- public void addResourceHandlers(final ResourceHandlerRegistry registry) {
- registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
- }
-}
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/config/PersistenceConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/config/PersistenceConfig.java
deleted file mode 100644
index 1c4cb0124a..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/config/PersistenceConfig.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.baeldung.config;
-
-import java.util.Properties;
-
-import javax.persistence.EntityManagerFactory;
-import javax.sql.DataSource;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-import org.springframework.core.env.Environment;
-import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
-import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
-import org.springframework.jdbc.datasource.DriverManagerDataSource;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
-import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
-import org.springframework.transaction.PlatformTransactionManager;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-
-@Configuration
-@EnableTransactionManagement
-@PropertySource({ "classpath:persistence-derby.properties" })
-@EnableJpaRepositories(basePackages = "org.baeldung.persistence.dao")
-public class PersistenceConfig {
-
- @Autowired
- private Environment env;
-
- public PersistenceConfig() {
- super();
- }
-
- // beans
-
- @Bean
- public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
- final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
- em.setDataSource(dataSource());
- em.setPackagesToScan(new String[] { "org.baeldung.persistence.model" });
-
- final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
- em.setJpaVendorAdapter(vendorAdapter);
- em.setJpaProperties(additionalProperties());
-
- return em;
- }
-
- @Bean
- public DataSource dataSource() {
- final DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
- dataSource.setUrl(env.getProperty("jdbc.url"));
- dataSource.setUsername(env.getProperty("jdbc.user"));
- dataSource.setPassword(env.getProperty("jdbc.pass"));
-
- return dataSource;
- }
-
- @Bean
- public PlatformTransactionManager transactionManager(final EntityManagerFactory emf) {
- final JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(emf);
- return transactionManager;
- }
-
- @Bean
- public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
- return new PersistenceExceptionTranslationPostProcessor();
- }
-
- final Properties additionalProperties() {
- final Properties hibernateProperties = new Properties();
- hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
- hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
- hibernateProperties.setProperty("hibernate.cache.use_second_level_cache", env.getProperty("hibernate.cache.use_second_level_cache"));
- hibernateProperties.setProperty("hibernate.cache.use_query_cache", env.getProperty("hibernate.cache.use_query_cache"));
- // hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true");
- return hibernateProperties;
- }
-}
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/config/SecurityConfig.java
deleted file mode 100644
index 8cc9d45823..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/config/SecurityConfig.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package org.baeldung.config;
-
-import org.baeldung.security.MyUserDetailsService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.builders.WebSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
-import org.springframework.security.crypto.password.PasswordEncoder;
-
-@Configuration
-@EnableWebSecurity
-@ComponentScan("org.baeldung.security")
-public class SecurityConfig extends WebSecurityConfigurerAdapter {
-
- @Autowired
- private MyUserDetailsService userDetailsService;
-
- @Override
- protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- auth.userDetailsService(userDetailsService);
- }
-
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/resources/**");
- }
-
- @Override
- protected void configure(final HttpSecurity http) throws Exception {
- // @formatter:off
- http.authorizeRequests()
- .antMatchers("/login").permitAll()
- .antMatchers("/admin").hasRole("ADMIN")
- .anyRequest().authenticated()
- .and().formLogin().permitAll()
- .and().csrf().disable();
- ;
- // @formatter:on
- }
-
- @Bean
- public DaoAuthenticationProvider authenticationProvider() {
- final DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
- authProvider.setUserDetailsService(userDetailsService);
- authProvider.setPasswordEncoder(encoder());
- return authProvider;
- }
-
- @Bean
- public PasswordEncoder encoder() {
- return new BCryptPasswordEncoder(11);
- }
-}
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java b/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java
deleted file mode 100644
index 23fda0547f..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginApplication.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.baeldung.multiplelogin;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.context.web.SpringBootServletInitializer;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-
-@SpringBootApplication
-@ComponentScan("org.baeldung.multiplelogin")
-public class MultipleLoginApplication extends SpringBootServletInitializer {
- public static void main(String[] args) {
- SpringApplication.run(MultipleLoginApplication.class, args);
- }
-
- @Override
- protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
- return application.sources(MultipleLoginApplication.class);
- }
-}
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginMvcConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginMvcConfig.java
deleted file mode 100644
index ec76be1909..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginMvcConfig.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package org.baeldung.multiplelogin;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.ViewResolver;
-import org.springframework.web.servlet.config.annotation.EnableWebMvc;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-import org.springframework.web.servlet.view.InternalResourceViewResolver;
-import org.springframework.web.servlet.view.JstlView;
-import org.springframework.context.annotation.ComponentScan;
-
-@EnableWebMvc
-@Configuration
-@ComponentScan("org.baeldung.controller")
-public class MultipleLoginMvcConfig extends WebMvcConfigurerAdapter {
-
- public MultipleLoginMvcConfig() {
- super();
- }
-
- // API
-
- @Override
- public void addViewControllers(final ViewControllerRegistry registry) {
- super.addViewControllers(registry);
-
- registry.addViewController("/anonymous.html");
-
- registry.addViewController("/login.html");
- registry.addViewController("/homepage.html");
- registry.addViewController("/console.html");
- }
-
- @Bean
- public ViewResolver viewResolver() {
- final InternalResourceViewResolver bean = new InternalResourceViewResolver();
-
- bean.setViewClass(JstlView.class);
- bean.setPrefix("/WEB-INF/view/");
- bean.setSuffix(".jsp");
-
- return bean;
- }
-}
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
deleted file mode 100644
index d7dbf17723..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/MultipleLoginSecurityConfig.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package org.baeldung.multiplelogin;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.core.annotation.Order;
-import org.springframework.security.authentication.AuthenticationProvider;
-import org.springframework.security.authentication.TestingAuthenticationProvider;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.core.userdetails.User;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.provisioning.InMemoryUserDetailsManager;
-
-@Configuration
-@EnableWebSecurity
-public class MultipleLoginSecurityConfig {
-
- @Bean
- public UserDetailsService userDetailsService() throws Exception {
- InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
- manager.createUser(User.withUsername("user")
- .password("userPass")
- .roles("USER")
- .build());
- manager.createUser(User.withUsername("admin")
- .password("adminPass")
- .roles("ADMIN")
- .build());
- return manager;
- }
-
- @Configuration
- @Order(1)
- public static class App1ConfigurationAdapter extends WebSecurityConfigurerAdapter {
-
- public App1ConfigurationAdapter() {
- super();
- }
-
- @Override
- protected void configure(AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication()
- .withUser("admin")
- .password("admin")
- .roles("ADMIN");
- }
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http.antMatcher("/admin*")
- .authorizeRequests()
- .anyRequest()
- .hasRole("ADMIN")
- // log in
- .and()
- .formLogin()
- .loginPage("/loginAdmin")
- .loginProcessingUrl("/admin_login")
- .failureUrl("/loginAdmin?error=loginError")
- .defaultSuccessUrl("/adminPage")
- // logout
- .and()
- .logout()
- .logoutUrl("/admin_logout")
- .logoutSuccessUrl("/protectedLinks")
- .deleteCookies("JSESSIONID")
- .and()
- .exceptionHandling()
- .accessDeniedPage("/403")
- .and()
- .csrf()
- .disable();
- }
- }
-
- @Configuration
- @Order(2)
- public static class App2ConfigurationAdapter extends WebSecurityConfigurerAdapter {
-
- public App2ConfigurationAdapter() {
- super();
- }
-
- @Override
- protected void configure(AuthenticationManagerBuilder auth) throws Exception {
- auth.inMemoryAuthentication()
- .withUser("user")
- .password("user")
- .roles("USER");
- }
-
- protected void configure(HttpSecurity http) throws Exception {
- http.antMatcher("/user*")
- .authorizeRequests()
- .anyRequest()
- .hasRole("USER")
- // log in
- .and()
- .formLogin()
- .loginPage("/loginUser")
- .loginProcessingUrl("/user_login")
- .failureUrl("/loginUser?error=loginError")
- .defaultSuccessUrl("/userPage")
- // logout
- .and()
- .logout()
- .logoutUrl("/user_logout")
- .logoutSuccessUrl("/protectedLinks")
- .deleteCookies("JSESSIONID")
- .and()
- .exceptionHandling()
- .accessDeniedPage("/403")
- .and()
- .csrf()
- .disable();
- }
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/UsersController.java b/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/UsersController.java
deleted file mode 100644
index 0672a760af..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/multiplelogin/UsersController.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.baeldung.multiplelogin;
-
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-@Controller
-public class UsersController {
-
- @RequestMapping("/protectedLinks")
- public String getAnonymousPage() {
- return "protectedLinks";
- }
-
- @RequestMapping("/userPage")
- public String getUserPage() {
- return "userPage";
- }
-
- @RequestMapping("/adminPage")
- public String getAdminPage() {
- return "adminPage";
- }
-
- @RequestMapping("/loginAdmin")
- public String getAdminLoginPage() {
- return "loginAdmin";
- }
-
- @RequestMapping("/loginUser")
- public String getUserLoginPage() {
- return "loginUser";
- }
-
- @RequestMapping("/403")
- public String getAccessDeniedPage() {
- return "403";
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/SetupData.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/SetupData.java
deleted file mode 100644
index 631c8dfc58..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/SetupData.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.baeldung.persistence;
-
-import java.util.Arrays;
-import java.util.HashSet;
-
-import javax.annotation.PostConstruct;
-
-import org.baeldung.persistence.dao.OrganizationRepository;
-import org.baeldung.persistence.dao.PrivilegeRepository;
-import org.baeldung.persistence.dao.UserRepository;
-import org.baeldung.persistence.model.Organization;
-import org.baeldung.persistence.model.Privilege;
-import org.baeldung.persistence.model.User;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-public class SetupData {
- @Autowired
- private UserRepository userRepository;
-
- @Autowired
- private PrivilegeRepository privilegeRepository;
-
- @Autowired
- private OrganizationRepository organizationRepository;
-
- @PostConstruct
- public void init() {
- initOrganizations();
- initPrivileges();
- initUsers();
- }
-
- private void initUsers() {
- final Privilege privilege1 = privilegeRepository.findByName("FOO_READ_PRIVILEGE");
- final Privilege privilege2 = privilegeRepository.findByName("FOO_WRITE_PRIVILEGE");
- //
- final User user1 = new User();
- user1.setUsername("john");
- user1.setPassword("123");
- user1.setPrivileges(new HashSet(Arrays.asList(privilege1)));
- user1.setOrganization(organizationRepository.findByName("FirstOrg"));
- userRepository.save(user1);
- //
- final User user2 = new User();
- user2.setUsername("tom");
- user2.setPassword("111");
- user2.setPrivileges(new HashSet(Arrays.asList(privilege1, privilege2)));
- user2.setOrganization(organizationRepository.findByName("SecondOrg"));
- userRepository.save(user2);
- }
-
- private void initOrganizations() {
- final Organization org1 = new Organization("FirstOrg");
- organizationRepository.save(org1);
- //
- final Organization org2 = new Organization("SecondOrg");
- organizationRepository.save(org2);
- }
-
- private void initPrivileges() {
- final Privilege privilege1 = new Privilege("FOO_READ_PRIVILEGE");
- privilegeRepository.save(privilege1);
- //
- final Privilege privilege2 = new Privilege("FOO_WRITE_PRIVILEGE");
- privilegeRepository.save(privilege2);
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/OrganizationRepository.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/OrganizationRepository.java
deleted file mode 100644
index a20d24057b..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/OrganizationRepository.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.baeldung.persistence.dao;
-
-import org.baeldung.persistence.model.Organization;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface OrganizationRepository extends JpaRepository {
-
- public Organization findByName(String name);
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/PrivilegeRepository.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/PrivilegeRepository.java
deleted file mode 100644
index edf9002c3d..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/PrivilegeRepository.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package org.baeldung.persistence.dao;
-
-import org.baeldung.persistence.model.Privilege;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-public interface PrivilegeRepository extends JpaRepository {
-
- public Privilege findByName(String name);
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/UserRepository.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/UserRepository.java
deleted file mode 100644
index 337106a187..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/dao/UserRepository.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.baeldung.persistence.dao;
-
-import org.baeldung.persistence.model.User;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.transaction.annotation.Transactional;
-
-public interface UserRepository extends JpaRepository {
-
- User findByUsername(final String username);
-
- @Transactional
- void removeUserByUsername(String username);
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Foo.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Foo.java
deleted file mode 100644
index 29c19cf22e..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Foo.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package org.baeldung.persistence.model;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Foo {
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
-
- @Column(nullable = false)
- private String name;
-
- //
-
- public Foo() {
- super();
- }
-
- public Foo(String name) {
- super();
- this.name = name;
- }
-
- //
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- //
-
- @Override
- public String toString() {
- final StringBuilder builder = new StringBuilder();
- builder.append("Foo [id=").append(id).append(", name=").append(name).append("]");
- return builder.toString();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = (prime * result) + ((id == null) ? 0 : id.hashCode());
- result = (prime * result) + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Foo other = (Foo) obj;
- if (id == null) {
- if (other.id != null) {
- return false;
- }
- } else if (!id.equals(other.id)) {
- return false;
- }
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- return true;
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Organization.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Organization.java
deleted file mode 100644
index 645285b5e9..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Organization.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.baeldung.persistence.model;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Organization {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
-
- @Column(nullable = false, unique = true)
- private String name;
-
- //
-
- public Organization() {
- super();
- }
-
- public Organization(String name) {
- super();
- this.name = name;
- }
-
- //
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- //
-
- @Override
- public String toString() {
- final StringBuilder builder = new StringBuilder();
- builder.append("Organization [id=").append(id).append(", name=").append(name).append("]");
- return builder.toString();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = (prime * result) + ((id == null) ? 0 : id.hashCode());
- result = (prime * result) + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Organization other = (Organization) obj;
- if (id == null) {
- if (other.id != null) {
- return false;
- }
- } else if (!id.equals(other.id)) {
- return false;
- }
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- return true;
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Privilege.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Privilege.java
deleted file mode 100644
index ff3ae62c25..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/Privilege.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.baeldung.persistence.model;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Privilege {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
-
- @Column(nullable = false, unique = true)
- private String name;
-
- //
-
- public Privilege() {
- super();
- }
-
- public Privilege(String name) {
- super();
- this.name = name;
- }
-
- //
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- //
-
- @Override
- public String toString() {
- final StringBuilder builder = new StringBuilder();
- builder.append("Privilege [id=").append(id).append(", name=").append(name).append("]");
- return builder.toString();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = (prime * result) + ((id == null) ? 0 : id.hashCode());
- result = (prime * result) + ((name == null) ? 0 : name.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Privilege other = (Privilege) obj;
- if (id == null) {
- if (other.id != null) {
- return false;
- }
- } else if (!id.equals(other.id)) {
- return false;
- }
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- return true;
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/User.java b/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/User.java
deleted file mode 100644
index 2ff8beebf0..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/persistence/model/User.java
+++ /dev/null
@@ -1,155 +0,0 @@
-package org.baeldung.persistence.model;
-
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.JoinTable;
-import javax.persistence.ManyToMany;
-import javax.persistence.ManyToOne;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "user_table")
-public class User {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private Long id;
-
- @Column(nullable = false, unique = true)
- private String username;
-
- private String password;
-
- @ManyToMany(fetch = FetchType.EAGER)
- @JoinTable(name = "users_privileges", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
- private Set privileges;
-
- @ManyToOne(fetch = FetchType.EAGER)
- @JoinColumn(name = "organization_id", referencedColumnName = "id")
- private Organization organization;
-
- //
-
- public User() {
- super();
- }
-
- //
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public Set getPrivileges() {
- return privileges;
- }
-
- public void setPrivileges(Set privileges) {
- this.privileges = privileges;
- }
-
- public Organization getOrganization() {
- return organization;
- }
-
- public void setOrganization(Organization organization) {
- this.organization = organization;
- }
-
- //
-
- @Override
- public String toString() {
- final StringBuilder builder = new StringBuilder();
- builder.append("User [id=").append(id).append(", username=").append(username).append(", password=").append(password).append(", privileges=").append(privileges).append(", organization=").append(organization).append("]");
- return builder.toString();
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = (prime * result) + ((id == null) ? 0 : id.hashCode());
- result = (prime * result) + ((organization == null) ? 0 : organization.hashCode());
- result = (prime * result) + ((password == null) ? 0 : password.hashCode());
- result = (prime * result) + ((privileges == null) ? 0 : privileges.hashCode());
- result = (prime * result) + ((username == null) ? 0 : username.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final User other = (User) obj;
- if (id == null) {
- if (other.id != null) {
- return false;
- }
- } else if (!id.equals(other.id)) {
- return false;
- }
- if (organization == null) {
- if (other.organization != null) {
- return false;
- }
- } else if (!organization.equals(other.organization)) {
- return false;
- }
- if (password == null) {
- if (other.password != null) {
- return false;
- }
- } else if (!password.equals(other.password)) {
- return false;
- }
- if (privileges == null) {
- if (other.privileges != null) {
- return false;
- }
- } else if (!privileges.equals(other.privileges)) {
- return false;
- }
- if (username == null) {
- if (other.username != null) {
- return false;
- }
- } else if (!username.equals(other.username)) {
- return false;
- }
- return true;
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomMethodSecurityExpressionHandler.java b/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomMethodSecurityExpressionHandler.java
deleted file mode 100644
index e040a0b109..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomMethodSecurityExpressionHandler.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.baeldung.security;
-
-import org.aopalliance.intercept.MethodInvocation;
-import org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler;
-import org.springframework.security.access.expression.method.MethodSecurityExpressionOperations;
-import org.springframework.security.authentication.AuthenticationTrustResolver;
-import org.springframework.security.authentication.AuthenticationTrustResolverImpl;
-import org.springframework.security.core.Authentication;
-
-public class CustomMethodSecurityExpressionHandler extends DefaultMethodSecurityExpressionHandler {
- private final AuthenticationTrustResolver trustResolver = new AuthenticationTrustResolverImpl();
-
- @Override
- protected MethodSecurityExpressionOperations createSecurityExpressionRoot(Authentication authentication, MethodInvocation invocation) {
- // final CustomMethodSecurityExpressionRoot root = new CustomMethodSecurityExpressionRoot(authentication);
- final MySecurityExpressionRoot root = new MySecurityExpressionRoot(authentication);
- root.setPermissionEvaluator(getPermissionEvaluator());
- root.setTrustResolver(this.trustResolver);
- root.setRoleHierarchy(getRoleHierarchy());
- return root;
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomMethodSecurityExpressionRoot.java b/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomMethodSecurityExpressionRoot.java
deleted file mode 100644
index 2d84536a14..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomMethodSecurityExpressionRoot.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package org.baeldung.security;
-
-import org.baeldung.persistence.model.User;
-import org.springframework.security.access.expression.SecurityExpressionRoot;
-import org.springframework.security.access.expression.method.MethodSecurityExpressionOperations;
-import org.springframework.security.core.Authentication;
-
-public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot implements MethodSecurityExpressionOperations {
-
- private Object filterObject;
- private Object returnObject;
-
- public CustomMethodSecurityExpressionRoot(Authentication authentication) {
- super(authentication);
- }
-
- //
- public boolean isMember(Long OrganizationId) {
- final User user = ((MyUserPrincipal) this.getPrincipal()).getUser();
- return user.getOrganization().getId().longValue() == OrganizationId.longValue();
- }
-
- //
-
- @Override
- public Object getFilterObject() {
- return this.filterObject;
- }
-
- @Override
- public Object getReturnObject() {
- return this.returnObject;
- }
-
- @Override
- public Object getThis() {
- return this;
- }
-
- @Override
- public void setFilterObject(Object obj) {
- this.filterObject = obj;
- }
-
- @Override
- public void setReturnObject(Object obj) {
- this.returnObject = obj;
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomPermissionEvaluator.java b/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomPermissionEvaluator.java
deleted file mode 100644
index 5d96673a8f..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/security/CustomPermissionEvaluator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.baeldung.security;
-
-import java.io.Serializable;
-
-import org.springframework.security.access.PermissionEvaluator;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-
-public class CustomPermissionEvaluator implements PermissionEvaluator {
-
- @Override
- public boolean hasPermission(Authentication auth, Object targetDomainObject, Object permission) {
- if ((auth == null) || (targetDomainObject == null) || !(permission instanceof String)) {
- return false;
- }
- final String targetType = targetDomainObject.getClass().getSimpleName().toUpperCase();
- return hasPrivilege(auth, targetType, permission.toString().toUpperCase());
- }
-
- @Override
- public boolean hasPermission(Authentication auth, Serializable targetId, String targetType, Object permission) {
- if ((auth == null) || (targetType == null) || !(permission instanceof String)) {
- return false;
- }
- return hasPrivilege(auth, targetType.toUpperCase(), permission.toString().toUpperCase());
- }
-
- private boolean hasPrivilege(Authentication auth, String targetType, String permission) {
- for (final GrantedAuthority grantedAuth : auth.getAuthorities()) {
- System.out.println("here " + grantedAuth);
- if (grantedAuth.getAuthority().startsWith(targetType)) {
- if (grantedAuth.getAuthority().contains(permission)) {
- return true;
- }
- }
- }
- return false;
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/security/MySecurityExpressionRoot.java b/spring-security-custom-permission/src/main/java/org/baeldung/security/MySecurityExpressionRoot.java
deleted file mode 100644
index 4d3561b325..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/security/MySecurityExpressionRoot.java
+++ /dev/null
@@ -1,203 +0,0 @@
-package org.baeldung.security;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.baeldung.persistence.model.User;
-import org.springframework.security.access.PermissionEvaluator;
-import org.springframework.security.access.expression.method.MethodSecurityExpressionOperations;
-import org.springframework.security.access.hierarchicalroles.RoleHierarchy;
-import org.springframework.security.authentication.AuthenticationTrustResolver;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.AuthorityUtils;
-
-public class MySecurityExpressionRoot implements MethodSecurityExpressionOperations {
- protected final Authentication authentication;
- private AuthenticationTrustResolver trustResolver;
- private RoleHierarchy roleHierarchy;
- private Set roles;
- private String defaultRolePrefix = "ROLE_";
-
- public final boolean permitAll = true;
- public final boolean denyAll = false;
- private PermissionEvaluator permissionEvaluator;
- public final String read = "read";
- public final String write = "write";
- public final String create = "create";
- public final String delete = "delete";
- public final String admin = "administration";
-
- //
-
- private Object filterObject;
- private Object returnObject;
-
- public MySecurityExpressionRoot(Authentication authentication) {
- if (authentication == null) {
- throw new IllegalArgumentException("Authentication object cannot be null");
- }
- this.authentication = authentication;
- }
-
- @Override
- public final boolean hasAuthority(String authority) {
- throw new RuntimeException("method hasAuthority() not allowed");
- }
-
- //
- public boolean isMember(Long OrganizationId) {
- final User user = ((MyUserPrincipal) this.getPrincipal()).getUser();
- return user.getOrganization().getId().longValue() == OrganizationId.longValue();
- }
-
- //
-
- @Override
- public final boolean hasAnyAuthority(String... authorities) {
- return hasAnyAuthorityName(null, authorities);
- }
-
- @Override
- public final boolean hasRole(String role) {
- return hasAnyRole(role);
- }
-
- @Override
- public final boolean hasAnyRole(String... roles) {
- return hasAnyAuthorityName(defaultRolePrefix, roles);
- }
-
- private boolean hasAnyAuthorityName(String prefix, String... roles) {
- final Set roleSet = getAuthoritySet();
-
- for (final String role : roles) {
- final String defaultedRole = getRoleWithDefaultPrefix(prefix, role);
- if (roleSet.contains(defaultedRole)) {
- return true;
- }
- }
-
- return false;
- }
-
- @Override
- public final Authentication getAuthentication() {
- return authentication;
- }
-
- @Override
- public final boolean permitAll() {
- return true;
- }
-
- @Override
- public final boolean denyAll() {
- return false;
- }
-
- @Override
- public final boolean isAnonymous() {
- return trustResolver.isAnonymous(authentication);
- }
-
- @Override
- public final boolean isAuthenticated() {
- return !isAnonymous();
- }
-
- @Override
- public final boolean isRememberMe() {
- return trustResolver.isRememberMe(authentication);
- }
-
- @Override
- public final boolean isFullyAuthenticated() {
- return !trustResolver.isAnonymous(authentication) && !trustResolver.isRememberMe(authentication);
- }
-
- public Object getPrincipal() {
- return authentication.getPrincipal();
- }
-
- public void setTrustResolver(AuthenticationTrustResolver trustResolver) {
- this.trustResolver = trustResolver;
- }
-
- public void setRoleHierarchy(RoleHierarchy roleHierarchy) {
- this.roleHierarchy = roleHierarchy;
- }
-
- public void setDefaultRolePrefix(String defaultRolePrefix) {
- this.defaultRolePrefix = defaultRolePrefix;
- }
-
- private Set getAuthoritySet() {
- if (roles == null) {
- roles = new HashSet();
- Collection extends GrantedAuthority> userAuthorities = authentication.getAuthorities();
-
- if (roleHierarchy != null) {
- userAuthorities = roleHierarchy.getReachableGrantedAuthorities(userAuthorities);
- }
-
- roles = AuthorityUtils.authorityListToSet(userAuthorities);
- }
-
- return roles;
- }
-
- @Override
- public boolean hasPermission(Object target, Object permission) {
- return permissionEvaluator.hasPermission(authentication, target, permission);
- }
-
- @Override
- public boolean hasPermission(Object targetId, String targetType, Object permission) {
- return permissionEvaluator.hasPermission(authentication, (Serializable) targetId, targetType, permission);
- }
-
- public void setPermissionEvaluator(PermissionEvaluator permissionEvaluator) {
- this.permissionEvaluator = permissionEvaluator;
- }
-
- private static String getRoleWithDefaultPrefix(String defaultRolePrefix, String role) {
- if (role == null) {
- return role;
- }
- if ((defaultRolePrefix == null) || (defaultRolePrefix.length() == 0)) {
- return role;
- }
- if (role.startsWith(defaultRolePrefix)) {
- return role;
- }
- return defaultRolePrefix + role;
- }
-
- @Override
- public Object getFilterObject() {
- return this.filterObject;
- }
-
- @Override
- public Object getReturnObject() {
- return this.returnObject;
- }
-
- @Override
- public Object getThis() {
- return this;
- }
-
- @Override
- public void setFilterObject(Object obj) {
- this.filterObject = obj;
- }
-
- @Override
- public void setReturnObject(Object obj) {
- this.returnObject = obj;
- }
-}
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/security/MyUserDetailsService.java b/spring-security-custom-permission/src/main/java/org/baeldung/security/MyUserDetailsService.java
deleted file mode 100644
index 685219728f..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/security/MyUserDetailsService.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.baeldung.security;
-
-import org.baeldung.persistence.dao.UserRepository;
-import org.baeldung.persistence.model.User;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-
-@Service
-public class MyUserDetailsService implements UserDetailsService {
-
- @Autowired
- private UserRepository userRepository;
-
- public MyUserDetailsService() {
- super();
- }
-
- // API
-
- @Override
- public UserDetails loadUserByUsername(final String username) {
- final User user = userRepository.findByUsername(username);
- if (user == null) {
- throw new UsernameNotFoundException(username);
- }
- return new MyUserPrincipal(user);
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/security/MyUserPrincipal.java b/spring-security-custom-permission/src/main/java/org/baeldung/security/MyUserPrincipal.java
deleted file mode 100644
index 437bb02cdb..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/security/MyUserPrincipal.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.baeldung.security;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.baeldung.persistence.model.Privilege;
-import org.baeldung.persistence.model.User;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-
-public class MyUserPrincipal implements UserDetails {
-
- private static final long serialVersionUID = 1L;
-
- private final User user;
-
- //
-
- public MyUserPrincipal(User user) {
- this.user = user;
- }
-
- //
-
- @Override
- public String getUsername() {
- return user.getUsername();
- }
-
- @Override
- public String getPassword() {
- return user.getPassword();
- }
-
- @Override
- public Collection extends GrantedAuthority> getAuthorities() {
- final List authorities = new ArrayList();
- for (final Privilege privilege : user.getPrivileges()) {
- authorities.add(new SimpleGrantedAuthority(privilege.getName()));
- }
- return authorities;
- }
-
- @Override
- public boolean isAccountNonExpired() {
- return true;
- }
-
- @Override
- public boolean isAccountNonLocked() {
- return true;
- }
-
- @Override
- public boolean isCredentialsNonExpired() {
- return true;
- }
-
- @Override
- public boolean isEnabled() {
- return true;
- }
-
- //
-
- public User getUser() {
- return user;
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java
deleted file mode 100644
index 2beda1e557..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/voter/MinuteBasedVoter.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.baeldung.voter;
-
-import java.time.LocalDateTime;
-import java.util.Collection;
-
-import org.springframework.security.access.AccessDecisionVoter;
-import org.springframework.security.access.ConfigAttribute;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-
-public class MinuteBasedVoter implements AccessDecisionVoter {
- @Override
- public boolean supports(ConfigAttribute attribute) {
- return true;
- }
-
- @Override
- public boolean supports(Class clazz) {
- return true;
- }
-
- @Override
- public int vote(Authentication authentication, Object object, Collection collection) {
- return authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority).filter(r -> "ROLE_USER".equals(r) && LocalDateTime.now().getMinute() % 2 != 0).findAny().map(s -> ACCESS_DENIED).orElseGet(() -> ACCESS_ABSTAIN);
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java
deleted file mode 100644
index c032a9634e..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterApplication.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.baeldung.voter;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.FilterType;
-
-@Configuration
-@EnableAutoConfiguration
-@ComponentScan(basePackages = { "org.baeldung.voter" })
-public class VoterApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(VoterApplication.class, args);
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java
deleted file mode 100644
index e282c794d0..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/voter/VoterMvcConfig.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.baeldung.voter;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-/**
- * Created by ambrusadrianz on 30/09/2016.
- */
-
-@Configuration
-public class VoterMvcConfig extends WebMvcConfigurerAdapter {
- @Override
- public void addViewControllers(ViewControllerRegistry registry) {
- registry.addViewController("/").setViewName("private");
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java
deleted file mode 100644
index 495567c7b2..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/voter/WebSecurityConfig.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package org.baeldung.voter;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.security.access.AccessDecisionManager;
-import org.springframework.security.access.AccessDecisionVoter;
-import org.springframework.security.access.vote.AuthenticatedVoter;
-import org.springframework.security.access.vote.RoleVoter;
-import org.springframework.security.access.vote.UnanimousBased;
-import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
-import org.springframework.security.config.annotation.web.builders.HttpSecurity;
-import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-import org.springframework.security.web.access.expression.WebExpressionVoter;
-import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
-
-import java.util.Arrays;
-import java.util.List;
-
-//@Configuration
-//@EnableWebSecurity
-public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
- @Autowired
- public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
- // @formatter: off
- auth.inMemoryAuthentication().withUser("user").password("pass").roles("USER").and().withUser("admin").password("pass").roles("ADMIN");
- // @formatter: on
- }
-
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- // @formatter: off
- http
- // needed so our login could work
- .csrf().disable().authorizeRequests().anyRequest().authenticated().accessDecisionManager(accessDecisionManager()).antMatchers("/").hasAnyRole("ROLE_ADMIN", "ROLE_USER").and().formLogin().permitAll().and().logout().permitAll()
- .deleteCookies("JSESSIONID").logoutSuccessUrl("/login");
- // @formatter: on
- }
-
- @Bean
- public AccessDecisionManager accessDecisionManager() {
- // @formatter: off
- List> decisionVoters = Arrays.asList(new WebExpressionVoter(), new RoleVoter(), new AuthenticatedVoter(), new MinuteBasedVoter());
- // @formatter: on
- return new UnanimousBased(decisionVoters);
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java b/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java
deleted file mode 100644
index 124513d317..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/voter/XmlSecurityConfig.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.baeldung.voter;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.ImportResource;
-
-/**
- * Created by ambrusadrianz on 09/10/2016.
- */
-@Configuration
-@ImportResource({ "classpath:spring-security.xml" })
-public class XmlSecurityConfig {
- public XmlSecurityConfig() {
- super();
- }
-}
diff --git a/spring-security-custom-permission/src/main/java/org/baeldung/web/MainController.java b/spring-security-custom-permission/src/main/java/org/baeldung/web/MainController.java
deleted file mode 100644
index 4752f7bdd9..0000000000
--- a/spring-security-custom-permission/src/main/java/org/baeldung/web/MainController.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.baeldung.web;
-
-import org.baeldung.persistence.dao.OrganizationRepository;
-import org.baeldung.persistence.model.Foo;
-import org.baeldung.persistence.model.Organization;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.ResponseBody;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@Controller
-public class MainController {
-
- @Autowired
- private OrganizationRepository organizationRepository;
-
- // @PostAuthorize("hasPermission(returnObject, 'read')")
- @PreAuthorize("hasPermission(#id, 'Foo', 'read')")
- @RequestMapping(method = RequestMethod.GET, value = "/foos/{id}")
- @ResponseBody
- public Foo findById(@PathVariable final long id) {
- return new Foo("Sample");
- }
-
- @PreAuthorize("hasPermission(#foo, 'write')")
- @RequestMapping(method = RequestMethod.POST, value = "/foos")
- @ResponseStatus(HttpStatus.CREATED)
- @ResponseBody
- public Foo create(@RequestBody final Foo foo) {
- return foo;
- }
-
- //
-
- @PreAuthorize("hasAuthority('FOO_READ_PRIVILEGE')")
- @RequestMapping(method = RequestMethod.GET, value = "/foos")
- @ResponseBody
- public Foo findFooByName(@RequestParam final String name) {
- return new Foo(name);
- }
-
- //
-
- @PreAuthorize("isMember(#id)")
- @RequestMapping(method = RequestMethod.GET, value = "/organizations/{id}")
- @ResponseBody
- public Organization findOrgById(@PathVariable final long id) {
- return organizationRepository.findOne(id);
- }
-
-}
diff --git a/spring-security-custom-permission/src/main/resources/application.properties b/spring-security-custom-permission/src/main/resources/application.properties
deleted file mode 100644
index 9b140b3c69..0000000000
--- a/spring-security-custom-permission/src/main/resources/application.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-server.port=8082
-server.context-path=/spring-security-custom-permission
-spring.datasource.driver-class-name=org.h2.Driver
-spring.datasource.url=jdbc:h2:mem:security_permission;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
-spring.datasource.username=sa
-spring.datasource.password=
-spring.jpa.hibernate.ddl-auto=create-drop
-spring.jpa.database=H2
-spring.jpa.show-sql=false
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/persistence-derby.properties b/spring-security-custom-permission/src/main/resources/persistence-derby.properties
deleted file mode 100644
index e808fdc288..0000000000
--- a/spring-security-custom-permission/src/main/resources/persistence-derby.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-# jdbc.X
-jdbc.driverClassName=org.apache.derby.jdbc.EmbeddedDriver
-jdbc.url=jdbc:derby:memory:spring_custom_user_service;create=true
-jdbc.user=tutorialuser
-jdbc.pass=tutorialpass
-
-# hibernate.X
-hibernate.dialect=org.hibernate.dialect.DerbyDialect
-hibernate.show_sql=false
-hibernate.hbm2ddl.auto=create
-hibernate.cache.use_second_level_cache=false
-hibernate.cache.use_query_cache=false
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/spring-security.xml b/spring-security-custom-permission/src/main/resources/spring-security.xml
deleted file mode 100644
index 83bc14dda7..0000000000
--- a/spring-security-custom-permission/src/main/resources/spring-security.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/403.html b/spring-security-custom-permission/src/main/resources/templates/403.html
deleted file mode 100644
index 20550768cf..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/403.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-You do not have permission to view this page.
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/adminPage.html b/spring-security-custom-permission/src/main/resources/templates/adminPage.html
deleted file mode 100644
index 13aff9b15a..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/adminPage.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-Insert title here
-
-
-Welcome admin! Logout
-
-
-Back to links
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/index.html b/spring-security-custom-permission/src/main/resources/templates/index.html
deleted file mode 100644
index 8e7394ad6a..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/index.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-Spring Security Thymeleaf
-
-
-
-
-
-
- Welcome
-
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/login.html b/spring-security-custom-permission/src/main/resources/templates/login.html
deleted file mode 100644
index dd6bd04767..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/login.html
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
- Login
-
-
-
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/loginAdmin.html b/spring-security-custom-permission/src/main/resources/templates/loginAdmin.html
deleted file mode 100644
index 43d0e73233..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/loginAdmin.html
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-Insert title here
-
-
-
- Admin login page
-
-
- Login failed!
-
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/loginUser.html b/spring-security-custom-permission/src/main/resources/templates/loginUser.html
deleted file mode 100644
index bf4ddd48bc..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/loginUser.html
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
-
-Login
-
-
-
- User login page
-
-
- Login failed!
-
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/private.html b/spring-security-custom-permission/src/main/resources/templates/private.html
deleted file mode 100644
index 5af8c7a13e..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/private.html
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- Private
-
-
-Congrats!
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/protectedLinks.html b/spring-security-custom-permission/src/main/resources/templates/protectedLinks.html
deleted file mode 100644
index 1877464fe5..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/protectedLinks.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-Insert title here
-
-
-
-User page
-
-Admin page
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/main/resources/templates/userPage.html b/spring-security-custom-permission/src/main/resources/templates/userPage.html
deleted file mode 100644
index 894a225871..0000000000
--- a/spring-security-custom-permission/src/main/resources/templates/userPage.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-Insert title here
-
-
-Welcome user! Logout
-
-Back to links
-
-
\ No newline at end of file
diff --git a/spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java b/spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java
deleted file mode 100644
index 616e80e6e9..0000000000
--- a/spring-security-custom-permission/src/test/java/org/baeldung/web/CustomUserDetailsServiceIntegrationTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package org.baeldung.web;
-
-import static org.junit.Assert.assertEquals;
-
-import org.baeldung.config.MvcConfig;
-import org.baeldung.config.PersistenceConfig;
-import org.baeldung.config.SecurityConfig;
-import org.baeldung.persistence.dao.UserRepository;
-import org.baeldung.persistence.model.User;
-import org.junit.After;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.SpringApplicationConfiguration;
-import org.springframework.security.authentication.AuthenticationProvider;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringApplicationConfiguration(classes = { MvcConfig.class, SecurityConfig.class, PersistenceConfig.class })
-@WebAppConfiguration
-public class CustomUserDetailsServiceIntegrationTest {
-
- public static final String USERNAME = "user";
- public static final String PASSWORD = "pass";
- public static final String USERNAME2 = "user2";
-
- @Autowired
- UserRepository myUserRepository;
-
- @Autowired
- AuthenticationProvider authenticationProvider;
-
- @Autowired
- PasswordEncoder passwordEncoder;
-
- //
-
- @Test
- public void givenExistingUser_whenAuthenticate_thenRetrieveFromDb() {
- User user = new User();
- user.setUsername(USERNAME);
- user.setPassword(passwordEncoder.encode(PASSWORD));
-
- myUserRepository.save(user);
-
- UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(USERNAME, PASSWORD);
- Authentication authentication = authenticationProvider.authenticate(auth);
-
- assertEquals(authentication.getName(), USERNAME);
- }
-
- @Test(expected = BadCredentialsException.class)
- public void givenIncorrectUser_whenAuthenticate_thenBadCredentialsException() {
- User user = new User();
- user.setUsername(USERNAME);
- user.setPassword(passwordEncoder.encode(PASSWORD));
-
- myUserRepository.save(user);
-
- UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(USERNAME2, PASSWORD);
- authenticationProvider.authenticate(auth);
- }
-
- //
-
- @After
- public void tearDown() {
- myUserRepository.removeUserByUsername(USERNAME);
- }
-
-}
diff --git a/spring-security-custom-permission/src/test/java/org/baeldung/web/LiveTest.java b/spring-security-custom-permission/src/test/java/org/baeldung/web/LiveTest.java
deleted file mode 100644
index 47626b814a..0000000000
--- a/spring-security-custom-permission/src/test/java/org/baeldung/web/LiveTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.baeldung.web;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.baeldung.persistence.model.Foo;
-import org.junit.Test;
-import org.springframework.http.MediaType;
-
-import com.jayway.restassured.RestAssured;
-import com.jayway.restassured.authentication.FormAuthConfig;
-import com.jayway.restassured.response.Response;
-import com.jayway.restassured.specification.RequestSpecification;
-
-public class LiveTest {
-
- private final FormAuthConfig formAuthConfig = new FormAuthConfig("http://localhost:8082/spring-security-custom-permission/login", "username", "password");
-
- @Test
- public void givenUserWithReadPrivilegeAndHasPermission_whenGetFooById_thenOK() {
- final Response response = givenAuth("john", "123").get("http://localhost:8082/spring-security-custom-permission/foos/1");
- assertEquals(200, response.getStatusCode());
- assertTrue(response.asString().contains("id"));
- }
-
- @Test
- public void givenUserWithNoWritePrivilegeAndHasPermission_whenPostFoo_thenForbidden() {
- final Response response = givenAuth("john", "123").contentType(MediaType.APPLICATION_JSON_VALUE).body(new Foo("sample")).post("http://localhost:8082/spring-security-custom-permission/foos");
- assertEquals(403, response.getStatusCode());
- }
-
- @Test
- public void givenUserWithWritePrivilegeAndHasPermission_whenPostFoo_thenOk() {
- final Response response = givenAuth("tom", "111").contentType(MediaType.APPLICATION_JSON_VALUE).body(new Foo("sample")).post("http://localhost:8082/spring-security-custom-permission/foos");
- assertEquals(201, response.getStatusCode());
- assertTrue(response.asString().contains("id"));
- }
-
- //
-
- @Test
- public void givenUserMemberInOrganization_whenGetOrganization_thenOK() {
- final Response response = givenAuth("john", "123").get("http://localhost:8082/spring-security-custom-permission/organizations/1");
- assertEquals(200, response.getStatusCode());
- assertTrue(response.asString().contains("id"));
- }
-
- @Test
- public void givenUserMemberNotInOrganization_whenGetOrganization_thenForbidden() {
- final Response response = givenAuth("john", "123").get("http://localhost:8082/spring-security-custom-permission/organizations/2");
- assertEquals(403, response.getStatusCode());
- }
-
- //
-
- @Test
- public void givenDisabledSecurityExpression_whenGetFooByName_thenError() {
- final Response response = givenAuth("john", "123").get("http://localhost:8082/spring-security-custom-permission/foos?name=sample");
- assertEquals(500, response.getStatusCode());
- assertTrue(response.asString().contains("method hasAuthority() not allowed"));
- }
-
- //
- private RequestSpecification givenAuth(String username, String password) {
- return RestAssured.given().auth().form(username, password, formAuthConfig);
- }
-}
\ No newline at end of file