From 4fa0844faf6f95bbde4a38d0b16cde066fd4d8af Mon Sep 17 00:00:00 2001 From: kwoyke Date: Fri, 23 Apr 2021 21:35:22 +0200 Subject: [PATCH] BAEL-3907: spring-security-web-boot-1 cleanup (#10657) Co-authored-by: Krzysztof Woyke --- .../relationships/SpringSecurityConfig.java | 7 +++- .../relationships/models/AppUser.java | 6 ++- .../baeldung/relationships/models/Tweet.java | 21 +++++----- .../repositories/TweetRepository.java | 2 +- .../repositories/UserRepository.java | 3 +- .../security/AppUserPrincipal.java | 11 +---- .../AuthenticationSuccessHandlerImpl.java | 4 +- .../security/CustomUserDetailsService.java | 6 +-- .../relationships/util/DummyContentUtil.java | 5 +-- .../baeldung/roles/custom/Application.java | 2 - .../roles/custom/config/MvcConfig.java | 5 --- .../roles/custom/persistence/SetupData.java | 13 +++--- .../dao/OrganizationRepository.java | 3 +- .../persistence/dao/PrivilegeRepository.java | 3 +- .../persistence/dao/UserRepository.java | 1 - .../roles/custom/persistence/model/Foo.java | 9 +---- .../persistence/model/Organization.java | 8 ---- .../custom/persistence/model/Privilege.java | 8 ---- .../roles/custom/persistence/model/User.java | 9 ----- .../CustomMethodSecurityExpressionRoot.java | 4 -- .../security/CustomPermissionEvaluator.java | 7 +--- .../security/MySecurityExpressionRoot.java | 7 +--- .../custom/security/MyUserDetailsService.java | 6 --- .../custom/security/MyUserPrincipal.java | 9 +---- .../roles/custom/web/MainController.java | 5 --- .../com/baeldung/roles/ip/IpApplication.java | 2 - .../CustomIpAuthenticationProvider.java | 28 ++++++------- .../roles/ip/config/SecurityConfig.java | 5 +-- .../baeldung/roles/ip/web/MainController.java | 10 ++--- .../CustomAuthenticationProvider.java | 2 +- .../MyLogoutSuccessHandler.java | 3 +- .../MyUserDetailsService.java | 21 +++++----- .../RolesAuthoritiesApplication.java | 2 +- .../rolesauthorities/config/MvcConfig.java | 5 --- .../config/SecurityConfig.java | 9 ----- .../rolesauthorities/model/Privilege.java | 4 -- .../roles/rolesauthorities/model/Role.java | 4 -- .../roles/rolesauthorities/model/User.java | 4 -- .../persistence/SetupDataLoader.java | 5 +-- .../roles/voter/MinuteBasedVoter.java | 9 ++++- .../baeldung/roles/voter/VoterMvcConfig.java | 4 -- .../roles/voter/WebSecurityConfig.java | 40 ++++++++++++++----- .../roles/voter/XmlSecurityConfig.java | 6 --- ...SpringDataWithSecurityIntegrationTest.java | 9 +++-- .../roles/web/ApplicationLiveTest.java | 7 +--- ...stomUserDetailsServiceIntegrationTest.java | 5 +-- .../com/baeldung/roles/web/IpLiveTest.java | 2 +- 47 files changed, 123 insertions(+), 227 deletions(-) diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java index 88814038a8..3d4182f423 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/SpringSecurityConfig.java @@ -28,12 +28,15 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private WebApplicationContext applicationContext; - private CustomUserDetailsService userDetailsService; + @Autowired private AuthenticationSuccessHandlerImpl successHandler; + @Autowired private DataSource dataSource; + private CustomUserDetailsService userDetailsService; + @PostConstruct public void completeSetup() { userDetailsService = applicationContext.getBean(CustomUserDetailsService.class); @@ -50,7 +53,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { } @Override - public void configure(WebSecurity web) throws Exception { + public void configure(WebSecurity web) { web.ignoring() .antMatchers("/resources/**"); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java index 2efd24e879..34bf775c1c 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/AppUser.java @@ -18,13 +18,17 @@ public class AppUser { private long id; private String name; + @Column(unique = true) private String username; + private String password; + private boolean enabled = true; + private Date lastLogin; - private AppUser() { + public AppUser() { } public AppUser(String name, String email, String password) { diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java index d8496f89be..2f593d5784 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/models/Tweet.java @@ -15,15 +15,27 @@ import javax.persistence.Table; @Entity @Table(name = "Tweet") public class Tweet { + @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private long id; + private String tweet; + private String owner; + @ElementCollection(targetClass = String.class, fetch = FetchType.EAGER) @CollectionTable(name = "Tweet_Likes") private Set likes = new HashSet<>(); + public Tweet() { + } + + public Tweet(String tweet, String owner) { + this.tweet = tweet; + this.owner = owner; + } + public long getId() { return id; } @@ -32,14 +44,6 @@ public class Tweet { this.id = id; } - private Tweet() { - } - - public Tweet(String tweet, String owner) { - this.tweet = tweet; - this.owner = owner; - } - public String getTweet() { return tweet; } @@ -63,5 +67,4 @@ public class Tweet { public void setLikes(Set likes) { this.likes = likes; } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java index 4e4b16a151..685a1a8ab9 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/TweetRepository.java @@ -9,6 +9,6 @@ import com.baeldung.relationships.models.Tweet; public interface TweetRepository extends PagingAndSortingRepository { - @Query("select twt from Tweet twt JOIN twt.likes as lk where lk = ?#{ principal?.username } or twt.owner = ?#{ principal?.username }") + @Query("SELECT twt FROM Tweet twt JOIN twt.likes AS lk WHERE lk = ?#{ principal?.username } OR twt.owner = ?#{ principal?.username }") Page getMyTweetsAndTheOnesILiked(Pageable pageable); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java index 883ea332f8..c93acecd78 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/repositories/UserRepository.java @@ -12,6 +12,7 @@ import org.springframework.transaction.annotation.Transactional; import com.baeldung.relationships.models.AppUser; public interface UserRepository extends CrudRepository { + AppUser findByUsername(String username); List findByName(String name); @@ -19,5 +20,5 @@ public interface UserRepository extends CrudRepository { @Query("UPDATE AppUser u SET u.lastLogin=:lastLogin WHERE u.username = ?#{ principal?.username }") @Modifying @Transactional - public void updateLastLogin(@Param("lastLogin") Date lastLogin); + void updateLastLogin(@Param("lastLogin") Date lastLogin); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java index 1ae7d95e41..129e44fb0f 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AppUserPrincipal.java @@ -2,7 +2,6 @@ package com.baeldung.relationships.security; import java.util.Collection; import java.util.Collections; -import java.util.List; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; @@ -14,14 +13,10 @@ public class AppUserPrincipal implements UserDetails { private final AppUser user; - // - public AppUserPrincipal(AppUser user) { this.user = user; } - // - @Override public String getUsername() { return user.getUsername(); @@ -34,8 +29,7 @@ public class AppUserPrincipal implements UserDetails { @Override public Collection getAuthorities() { - final List authorities = Collections.singletonList(new SimpleGrantedAuthority("User")); - return authorities; + return Collections.singletonList(new SimpleGrantedAuthority("User")); } @Override @@ -58,10 +52,7 @@ public class AppUserPrincipal implements UserDetails { return true; } - // - public AppUser getAppUser() { return user; } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java index 1b85294467..3636a20c2d 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/AuthenticationSuccessHandlerImpl.java @@ -1,9 +1,7 @@ package com.baeldung.relationships.security; -import java.io.IOException; import java.util.Date; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -21,7 +19,7 @@ public class AuthenticationSuccessHandlerImpl implements AuthenticationSuccessHa private UserRepository userRepository; @Override - public void onAuthenticationSuccess(HttpServletRequest arg0, HttpServletResponse arg1, Authentication arg2) throws IOException, ServletException { + public void onAuthenticationSuccess(HttpServletRequest arg0, HttpServletResponse arg1, Authentication arg2) { userRepository.updateLastLogin(new Date()); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java index 10c266bb74..f8a0f00d90 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/security/CustomUserDetailsService.java @@ -17,11 +17,8 @@ public class CustomUserDetailsService implements UserDetailsService { @Autowired private WebApplicationContext applicationContext; - private UserRepository userRepository; - public CustomUserDetailsService() { - super(); - } + private UserRepository userRepository; @PostConstruct public void completeSetup() { @@ -36,5 +33,4 @@ public class CustomUserDetailsService implements UserDetailsService { } return new AppUserPrincipal(appUser); } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java index b8e5192b48..5c71728c6f 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/relationships/util/DummyContentUtil.java @@ -15,7 +15,7 @@ import com.baeldung.relationships.models.Tweet; public class DummyContentUtil { - public static final List generateDummyUsers() { + public static List generateDummyUsers() { List appUsers = new ArrayList<>(); BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); appUsers.add(new AppUser("Lionel Messi", "lionel@messi.com", passwordEncoder.encode("li1234"))); @@ -31,7 +31,7 @@ public class DummyContentUtil { return appUsers; } - public static final List generateDummyTweets(List users) { + public static List generateDummyTweets(List users) { List tweets = new ArrayList<>(); Random random = new Random(); IntStream.range(0, 9) @@ -59,5 +59,4 @@ public class DummyContentUtil { grantedAuthorities.add(grantedAuthority); return grantedAuthorities; } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/Application.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/Application.java index e7ace1f962..b4aa242ddc 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/Application.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/Application.java @@ -3,11 +3,9 @@ package com.baeldung.roles.custom; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.PropertySource; @SpringBootApplication -@ComponentScan("com.baeldung.roles.custom") @PropertySource("classpath:application-defaults.properties") public class Application extends SpringBootServletInitializer { public static void main(String[] args) { diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java index c99d1e38a5..9ecd5c3abd 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/config/MvcConfig.java @@ -13,11 +13,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @EnableWebMvc public class MvcConfig implements WebMvcConfigurer { - public MvcConfig() { - super(); - } - - // @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java index ab57e7436c..25bf51507a 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/SetupData.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Component; @Component public class SetupData { + @Autowired private UserRepository userRepository; @@ -39,18 +40,18 @@ public class SetupData { 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(encoder.encode("123")); - user1.setPrivileges(new HashSet(Arrays.asList(privilege1))); + 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(encoder.encode("111")); - user2.setPrivileges(new HashSet(Arrays.asList(privilege1, privilege2))); + user2.setPrivileges(new HashSet<>(Arrays.asList(privilege1, privilege2))); user2.setOrganization(organizationRepository.findByName("SecondOrg")); userRepository.save(user2); } @@ -58,7 +59,7 @@ public class SetupData { private void initOrganizations() { final Organization org1 = new Organization("FirstOrg"); organizationRepository.save(org1); - // + final Organization org2 = new Organization("SecondOrg"); organizationRepository.save(org2); } @@ -66,7 +67,7 @@ public class SetupData { 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-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java index 2f585f3527..e5c99af331 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/OrganizationRepository.java @@ -5,6 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface OrganizationRepository extends JpaRepository { - public Organization findByName(String name); - + Organization findByName(String name); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java index c83e0f505e..43b8c317c5 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/PrivilegeRepository.java @@ -5,6 +5,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface PrivilegeRepository extends JpaRepository { - public Privilege findByName(String name); - + Privilege findByName(String name); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java index 884a998219..d6744f4d51 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/dao/UserRepository.java @@ -10,5 +10,4 @@ public interface UserRepository extends JpaRepository { @Transactional void removeUserByUsername(String username); - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java index 3dbf48f7ce..eab7696b47 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Foo.java @@ -8,6 +8,7 @@ import javax.persistence.Id; @Entity public class Foo { + @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @@ -15,19 +16,13 @@ public class Foo { @Column(nullable = false) private String name; - // - public Foo() { - super(); } public Foo(String name) { - super(); this.name = name; } - // - public Long getId() { return id; } @@ -44,8 +39,6 @@ public class Foo { this.name = name; } - // - @Override public String toString() { final StringBuilder builder = new StringBuilder(); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java index 0d0220b6b2..f9dc992b8c 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Organization.java @@ -16,19 +16,13 @@ public class Organization { @Column(nullable = false, unique = true) private String name; - // - public Organization() { - super(); } public Organization(String name) { - super(); this.name = name; } - // - public Long getId() { return id; } @@ -45,8 +39,6 @@ public class Organization { this.name = name; } - // - @Override public String toString() { final StringBuilder builder = new StringBuilder(); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java index 60e0506641..7757ec1bf6 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/Privilege.java @@ -16,19 +16,13 @@ public class Privilege { @Column(nullable = false, unique = true) private String name; - // - public Privilege() { - super(); } public Privilege(String name) { - super(); this.name = name; } - // - public Long getId() { return id; } @@ -45,8 +39,6 @@ public class Privilege { this.name = name; } - // - @Override public String toString() { final StringBuilder builder = new StringBuilder(); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java index 219f40a3df..45ae8c64ca 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/persistence/model/User.java @@ -35,13 +35,6 @@ public class User { @JoinColumn(name = "organization_id", referencedColumnName = "id") private Organization organization; - // - - public User() { - super(); - } - - // public Long getId() { return id; } @@ -82,8 +75,6 @@ public class User { this.organization = organization; } - // - @Override public String toString() { final StringBuilder builder = new StringBuilder(); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java index dd9f6a5786..47a4472a93 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomMethodSecurityExpressionRoot.java @@ -14,14 +14,11 @@ public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot i 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; @@ -46,5 +43,4 @@ public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot i public void setReturnObject(Object obj) { this.returnObject = obj; } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java index d69e405b28..2e81859203 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/CustomPermissionEvaluator.java @@ -27,11 +27,8 @@ public class CustomPermissionEvaluator implements PermissionEvaluator { 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; - } + if (grantedAuth.getAuthority().startsWith(targetType) && grantedAuth.getAuthority().contains(permission)) { + return true; } } return false; diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java index 8448ad9075..f3a3cbeb46 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MySecurityExpressionRoot.java @@ -15,6 +15,7 @@ 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; @@ -30,8 +31,6 @@ public class MySecurityExpressionRoot implements MethodSecurityExpressionOperati public final String delete = "delete"; public final String admin = "administration"; - // - private Object filterObject; private Object returnObject; @@ -47,14 +46,11 @@ public class MySecurityExpressionRoot implements MethodSecurityExpressionOperati 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); @@ -136,7 +132,6 @@ public class MySecurityExpressionRoot implements MethodSecurityExpressionOperati private Set getAuthoritySet() { if (roles == null) { - roles = new HashSet(); Collection userAuthorities = authentication.getAuthorities(); if (roleHierarchy != null) { diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java index c6514d6c05..dc845e05e1 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserDetailsService.java @@ -14,12 +14,6 @@ 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); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java index 41741c64f4..afe92fb066 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/security/MyUserPrincipal.java @@ -16,14 +16,10 @@ public class MyUserPrincipal implements UserDetails { private final User user; - // - public MyUserPrincipal(User user) { this.user = user; } - // - @Override public String getUsername() { return user.getUsername(); @@ -36,7 +32,7 @@ public class MyUserPrincipal implements UserDetails { @Override public Collection getAuthorities() { - final List authorities = new ArrayList(); + final List authorities = new ArrayList<>(); for (final Privilege privilege : user.getPrivileges()) { authorities.add(new SimpleGrantedAuthority(privilege.getName())); } @@ -63,10 +59,7 @@ public class MyUserPrincipal implements UserDetails { return true; } - // - public User getUser() { return user; } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java index beb12f7749..1908289f96 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/custom/web/MainController.java @@ -39,8 +39,6 @@ public class MainController { return foo; } - // - @PreAuthorize("hasAuthority('FOO_READ_PRIVILEGE')") @GetMapping("/foos") @ResponseBody @@ -48,8 +46,6 @@ public class MainController { return new Foo(name); } - // - @PreAuthorize("isMember(#id)") @GetMapping("/organizations/{id}") @ResponseBody @@ -64,5 +60,4 @@ public class MainController { public MyUserPrincipal retrieveUserDetails(@AuthenticationPrincipal MyUserPrincipal principal) { return principal; } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java index b9a86fee3e..ca1d21505b 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/IpApplication.java @@ -3,11 +3,9 @@ package com.baeldung.roles.ip; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.PropertySource; @SpringBootApplication -@ComponentScan("com.baeldung.ip") @PropertySource("classpath:application-defaults.properties") public class IpApplication extends SpringBootServletInitializer { public static void main(String[] args) { diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java index adcadb65e8..637af2301f 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/CustomIpAuthenticationProvider.java @@ -1,10 +1,5 @@ package com.baeldung.roles.ip.config; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - import org.springframework.security.authentication.AuthenticationProvider; import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -15,13 +10,17 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.web.authentication.WebAuthenticationDetails; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + @Component public class CustomIpAuthenticationProvider implements AuthenticationProvider { - - Set whitelist = new HashSet(); + + Set whitelist = new HashSet<>(); public CustomIpAuthenticationProvider() { - super(); whitelist.add("11.11.11.11"); whitelist.add("127.0.0.1"); } @@ -30,18 +29,17 @@ public class CustomIpAuthenticationProvider implements AuthenticationProvider { public Authentication authenticate(Authentication auth) throws AuthenticationException { WebAuthenticationDetails details = (WebAuthenticationDetails) auth.getDetails(); String userIp = details.getRemoteAddress(); - if(! whitelist.contains(userIp)){ + if (!whitelist.contains(userIp)) { throw new BadCredentialsException("Invalid IP Address"); } final String name = auth.getName(); final String password = auth.getCredentials().toString(); - + if (name.equals("john") && password.equals("123")) { - List authorities =new ArrayList(); - authorities.add(new SimpleGrantedAuthority("ROLE_USER")); - return new UsernamePasswordAuthenticationToken(name, password, authorities); - } - else{ + List authorities = new ArrayList<>(); + authorities.add(new SimpleGrantedAuthority("ROLE_USER")); + return new UsernamePasswordAuthenticationToken(name, password, authorities); + } else { throw new BadCredentialsException("Invalid username or password"); } } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java index 46ba62afb3..71c7bcccc6 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/config/SecurityConfig.java @@ -8,7 +8,7 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration -@EnableWebSecurity//(debug = true) +@EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired @@ -22,7 +22,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(final HttpSecurity http) throws Exception { - // @formatter:off http.authorizeRequests() .antMatchers("/login").permitAll() // .antMatchers("/foos/**").hasIpAddress("11.11.11.11") @@ -30,7 +29,5 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .anyRequest().authenticated() .and().formLogin().permitAll() .and().csrf().disable(); - // @formatter:on } - } \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java index 438b668c5f..6fa165433a 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/ip/web/MainController.java @@ -11,9 +11,8 @@ import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.security.web.FilterChainProxy; import org.springframework.security.web.SecurityFilterChain; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @Controller @@ -23,7 +22,7 @@ public class MainController { @Qualifier("springSecurityFilterChain") private Filter springSecurityFilterChain; - @RequestMapping(method = RequestMethod.GET, value = "/filters") + @GetMapping("/filters") @ResponseBody public void getFilters() { FilterChainProxy filterChainProxy = (FilterChainProxy) springSecurityFilterChain; @@ -32,11 +31,10 @@ public class MainController { .flatMap(chain -> chain.getFilters().stream()) .forEach(filter -> System.out.println(filter.getClass())); } - - @RequestMapping(method = RequestMethod.GET, value = "/foos/{id}") + + @GetMapping("/foos/{id}") @ResponseBody public Foo findById(@PathVariable final long id, HttpServletRequest request) { return new Foo("Sample"); } - } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java index 5168e64b4a..78bb18354b 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/CustomAuthenticationProvider.java @@ -12,11 +12,11 @@ import org.springframework.security.core.userdetails.UserDetailsService; public class CustomAuthenticationProvider extends DaoAuthenticationProvider { private final UserRepository userRepository; + @SuppressWarnings("unused") private UserDetailsService userDetailsService; public CustomAuthenticationProvider(UserRepository userRepository, UserDetailsService userDetailsService){ - super(); this.setUserDetailsService(userDetailsService); this.userRepository = userRepository; } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java index 23104e5292..0ee4707d1b 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyLogoutSuccessHandler.java @@ -2,7 +2,6 @@ package com.baeldung.roles.rolesauthorities; import java.io.IOException; -import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @@ -15,7 +14,7 @@ import org.springframework.stereotype.Component; public class MyLogoutSuccessHandler implements LogoutSuccessHandler { @Override - public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { + public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { final HttpSession session = request.getSession(); if (session != null) { session.removeAttribute("user"); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java index 18230ba794..72fae18c09 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/MyUserDetailsService.java @@ -24,12 +24,6 @@ public class MyUserDetailsService implements UserDetailsService { @Autowired private UserRepository userRepository; - public MyUserDetailsService() { - super(); - } - - // API - @Override public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { @@ -38,17 +32,20 @@ public class MyUserDetailsService implements UserDetailsService { if (user == null) { throw new UsernameNotFoundException("No user found with username: " + email); } - org.springframework.security.core.userdetails.User userDetails = new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(), user.isEnabled(), true, true, true, getAuthorities(user.getRoles())); - return userDetails; + return new org.springframework.security.core.userdetails.User(user.getEmail(), + user.getPassword(), + user.isEnabled(), + true, + true, + true, + getAuthorities(user.getRoles())); } catch (final Exception e) { throw new RuntimeException(e); } } - // UTIL - - private final Collection getAuthorities(Collection roles) { - List authorities = new ArrayList(); + private Collection getAuthorities(Collection roles) { + List authorities = new ArrayList<>(); for (Role role: roles) { authorities.add(new SimpleGrantedAuthority(role.getName())); authorities.addAll(role.getPrivileges() diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java index d3e54b4303..72d655c051 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/RolesAuthoritiesApplication.java @@ -8,7 +8,7 @@ import org.springframework.context.annotation.Configuration; @Configuration @EnableAutoConfiguration -@ComponentScan("com.baeldung.rolesauthorities") +@ComponentScan("com.baeldung.roles.rolesauthorities") public class RolesAuthoritiesApplication extends SpringBootServletInitializer { public static void main(String[] args) { System.setProperty("spring.profiles.default", "rolesauthorities"); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java index 61394b6178..3dd60704f0 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/MvcConfig.java @@ -13,11 +13,6 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @EnableWebMvc public class MvcConfig implements WebMvcConfigurer { - public MvcConfig() { - super(); - } - - // @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java index cb8476fcc7..9b7ccfd25b 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/config/SecurityConfig.java @@ -31,10 +31,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private LogoutSuccessHandler myLogoutSuccessHandler; - public SecurityConfig() { - super(); - } - @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.authenticationProvider(authProvider()); @@ -50,7 +46,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - // @formatter:off http .csrf().disable() .authorizeRequests() @@ -69,11 +64,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .logoutSuccessUrl("/logout.html?logSucc=true") .deleteCookies("JSESSIONID") .permitAll(); - // @formatter:on } - // beans - @Bean public DaoAuthenticationProvider authProvider() { final CustomAuthenticationProvider authProvider @@ -86,5 +78,4 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { public PasswordEncoder encoder() { return new BCryptPasswordEncoder(11); } - } \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java index 507beaffa8..1e444faf2d 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Privilege.java @@ -21,16 +21,12 @@ public class Privilege { private Collection roles; public Privilege() { - super(); } public Privilege(String name) { - super(); this.name = name; } - // - public Long getId() { return id; } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java index a284d92090..031c9f0828 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/Role.java @@ -27,16 +27,12 @@ public class Role { private String name; public Role() { - super(); } public Role(String name) { - super(); this.name = name; } - // - public Long getId() { return id; } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java index ebf0c9b310..cb90947ed6 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/model/User.java @@ -35,14 +35,11 @@ public class User { private boolean isUsing2FA; - // - @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id")) private Collection roles; public User() { - super(); this.enabled = false; } @@ -143,5 +140,4 @@ public class User { .append(firstName).append(", lastName=").append(lastName).append(", email=").append(email).append(", password=").append(password).append(", enabled=").append(enabled).append(", roles=").append(roles).append("]"); return builder.toString(); } - } \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java index 140fc56e53..bf3245a391 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/rolesauthorities/persistence/SetupDataLoader.java @@ -74,7 +74,7 @@ public class SetupDataLoader implements ApplicationListener privileges) { + public Role createRoleIfNotFound(String name, Collection privileges) { Role role = roleRepository.findByName(name); if (role == null) { role = new Role(name); @@ -93,5 +93,4 @@ public class SetupDataLoader implements ApplicationListener "ROLE_USER".equals(r) && LocalDateTime.now().getMinute() % 2 != 0).findAny().map(s -> ACCESS_DENIED).orElseGet(() -> ACCESS_ABSTAIN); + return authentication.getAuthorities() + .stream() + .map(GrantedAuthority::getAuthority) + .filter(r -> "ROLE_USER".equals(r) && LocalDateTime.now().getMinute() % 2 != 0) + .findAny() + .map(s -> ACCESS_DENIED) + .orElse(ACCESS_ABSTAIN); } } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java index 402065129f..4133d5fdb8 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/VoterMvcConfig.java @@ -4,10 +4,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -/** - * Created by ambrusadrianz on 30/09/2016. - */ - @Configuration public class VoterMvcConfig implements WebMvcConfigurer { @Override diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java index 1a6d1b8235..5141e1af7c 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/WebSecurityConfig.java @@ -22,28 +22,46 @@ 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(passwordEncoder().encode("pass")).roles("USER").and().withUser("admin").password(passwordEncoder().encode("pass")).roles("ADMIN"); - // @formatter: on + auth + .inMemoryAuthentication() + .withUser("user") + .password(passwordEncoder().encode("pass")) + .roles("USER") + .and() + .withUser("admin") + .password(passwordEncoder().encode("pass")) + .roles("ADMIN"); } @Override protected void configure(HttpSecurity http) throws Exception { - // @formatter: off http - // needed so our login could work - .csrf().disable().authorizeRequests().anyRequest().authenticated().accessDecisionManager(accessDecisionManager()).and().formLogin().permitAll().and().logout().permitAll() - .deleteCookies("JSESSIONID").logoutSuccessUrl("/login"); - // @formatter: on + .csrf() + .disable() + .authorizeRequests() + .anyRequest() + .authenticated() + .accessDecisionManager(accessDecisionManager()) + .and() + .formLogin() + .permitAll() + .and() + .logout() + .permitAll() + .deleteCookies("JSESSIONID").logoutSuccessUrl("/login"); } @Bean public AccessDecisionManager accessDecisionManager() { - // @formatter: off - List> decisionVoters = Arrays.asList(new WebExpressionVoter(), new RoleVoter(), new AuthenticatedVoter(), new MinuteBasedVoter()); - // @formatter: on + List> decisionVoters = Arrays.asList( + new WebExpressionVoter(), + new RoleVoter(), + new AuthenticatedVoter(), + new MinuteBasedVoter()); + return new UnanimousBased(decisionVoters); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java index 0ef2ef51c7..17a63142ea 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java +++ b/spring-security-modules/spring-security-web-boot-1/src/main/java/com/baeldung/roles/voter/XmlSecurityConfig.java @@ -1,12 +1,6 @@ package com.baeldung.roles.voter; -/** - * Created by ambrusadrianz on 09/10/2016. - */ // @Configuration // @ImportResource({ "classpath:spring-security-custom-voter.xml" }) public class XmlSecurityConfig { - public XmlSecurityConfig() { - super(); - } } diff --git a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java index 54120650d9..10c32de5d7 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java +++ b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/relationships/SpringDataWithSecurityIntegrationTest.java @@ -36,12 +36,15 @@ import static org.springframework.util.Assert.isTrue; @ContextConfiguration @DirtiesContext public class SpringDataWithSecurityIntegrationTest { - AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); - @Autowired - private ServletContext servletContext; + private static UserRepository userRepository; private static TweetRepository tweetRepository; + @Autowired + private ServletContext servletContext; + + AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); + @Before public void testInit() { ctx.register(AppConfig.class); diff --git a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java index 5a040b8dea..56f87e8aee 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java +++ b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/ApplicationLiveTest.java @@ -13,7 +13,7 @@ import io.restassured.specification.RequestSpecification; import org.junit.Test; import org.springframework.http.MediaType; -// In order to execute these tests, com.baeldung.custom.Application needs to be running. +// In order to execute these tests, com.baeldung.roles.custom.Application needs to be running. public class ApplicationLiveTest { @Test @@ -36,8 +36,6 @@ public class ApplicationLiveTest { assertTrue(response.asString().contains("id")); } - // - @Test public void givenUserMemberInOrganization_whenGetOrganization_thenOK() { final Response response = givenAuth("john", "123").get("http://localhost:8082/organizations/1"); @@ -51,8 +49,6 @@ public class ApplicationLiveTest { assertEquals(403, response.getStatusCode()); } - // - @Test public void givenDisabledSecurityExpression_whenGetFooByName_thenError() { final Response response = givenAuth("john", "123").get("http://localhost:8082/foos?name=sample"); @@ -60,7 +56,6 @@ public class ApplicationLiveTest { assertTrue(response.asString().contains("method hasAuthority() not allowed")); } - // private RequestSpecification givenAuth(String username, String password) { return RestAssured.given().log().uri().auth().form(username, password, new FormAuthConfig("/login","username","password")); } diff --git a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java index df7645150f..adf385140f 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java +++ b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/CustomUserDetailsServiceIntegrationTest.java @@ -9,7 +9,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import org.apache.http.HttpHeaders; import com.baeldung.roles.custom.Application; import com.baeldung.roles.custom.persistence.model.Foo; -import org.junit.jupiter.api.Test; +import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; @@ -82,8 +82,7 @@ public class CustomUserDetailsServiceIntegrationTest { private static String asJsonString(final Object obj) throws Exception { final ObjectMapper mapper = new ObjectMapper(); - final String jsonContent = mapper.writeValueAsString(obj); - return jsonContent; + return mapper.writeValueAsString(obj); } } diff --git a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java index 2d0e2e5402..a57f9e675f 100644 --- a/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java +++ b/spring-security-modules/spring-security-web-boot-1/src/test/java/com/baeldung/roles/web/IpLiveTest.java @@ -8,7 +8,7 @@ import io.restassured.response.Response; import org.junit.Test; -// In order to execute these tests, com.baeldung.ip.IpApplication needs to be running. +// In order to execute these tests, com.baeldung.roles.ip.IpApplication needs to be running. public class IpLiveTest { @Test