mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-07-05 10:12:36 +00:00
Polish gh-4048
This commit is contained in:
parent
422bc37115
commit
53352e336d
@ -110,7 +110,8 @@ import org.springframework.util.Assert;
|
|||||||
* @author colin sampaleanu
|
* @author colin sampaleanu
|
||||||
* @author Luke Taylor
|
* @author Luke Taylor
|
||||||
*/
|
*/
|
||||||
public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, MessageSourceAware {
|
public class JdbcDaoImpl extends JdbcDaoSupport
|
||||||
|
implements UserDetailsService, MessageSourceAware {
|
||||||
// ~ Static fields/initializers
|
// ~ Static fields/initializers
|
||||||
// =====================================================================================
|
// =====================================================================================
|
||||||
|
|
||||||
@ -126,8 +127,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, M
|
|||||||
// ~ Instance fields
|
// ~ Instance fields
|
||||||
// ================================================================================================
|
// ================================================================================================
|
||||||
|
|
||||||
protected final MessageSourceAccessor messages = SpringSecurityMessageSource
|
protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
|
||||||
.getAccessor();
|
|
||||||
|
|
||||||
private String authoritiesByUsernameQuery;
|
private String authoritiesByUsernameQuery;
|
||||||
private String groupAuthoritiesByUsernameQuery;
|
private String groupAuthoritiesByUsernameQuery;
|
||||||
@ -149,6 +149,13 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, M
|
|||||||
// ~ Methods
|
// ~ Methods
|
||||||
// ========================================================================================================
|
// ========================================================================================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the messages
|
||||||
|
*/
|
||||||
|
protected MessageSourceAccessor getMessages() {
|
||||||
|
return this.messages;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows subclasses to add their own granted authorities to the list to be returned
|
* Allows subclasses to add their own granted authorities to the list to be returned
|
||||||
* in the <tt>UserDetails</tt>.
|
* in the <tt>UserDetails</tt>.
|
||||||
@ -171,6 +178,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, M
|
|||||||
"Use of either authorities or groups must be enabled");
|
"Use of either authorities or groups must be enabled");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public UserDetails loadUserByUsername(String username)
|
public UserDetails loadUserByUsername(String username)
|
||||||
throws UsernameNotFoundException {
|
throws UsernameNotFoundException {
|
||||||
List<UserDetails> users = loadUsersByUsername(username);
|
List<UserDetails> users = loadUsersByUsername(username);
|
||||||
@ -218,6 +226,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, M
|
|||||||
protected List<UserDetails> loadUsersByUsername(String username) {
|
protected List<UserDetails> loadUsersByUsername(String username) {
|
||||||
return getJdbcTemplate().query(this.usersByUsernameQuery,
|
return getJdbcTemplate().query(this.usersByUsernameQuery,
|
||||||
new String[] { username }, new RowMapper<UserDetails>() {
|
new String[] { username }, new RowMapper<UserDetails>() {
|
||||||
|
@Override
|
||||||
public UserDetails mapRow(ResultSet rs, int rowNum)
|
public UserDetails mapRow(ResultSet rs, int rowNum)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
String username = rs.getString(1);
|
String username = rs.getString(1);
|
||||||
@ -238,6 +247,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, M
|
|||||||
protected List<GrantedAuthority> loadUserAuthorities(String username) {
|
protected List<GrantedAuthority> loadUserAuthorities(String username) {
|
||||||
return getJdbcTemplate().query(this.authoritiesByUsernameQuery,
|
return getJdbcTemplate().query(this.authoritiesByUsernameQuery,
|
||||||
new String[] { username }, new RowMapper<GrantedAuthority>() {
|
new String[] { username }, new RowMapper<GrantedAuthority>() {
|
||||||
|
@Override
|
||||||
public GrantedAuthority mapRow(ResultSet rs, int rowNum)
|
public GrantedAuthority mapRow(ResultSet rs, int rowNum)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
String roleName = JdbcDaoImpl.this.rolePrefix + rs.getString(2);
|
String roleName = JdbcDaoImpl.this.rolePrefix + rs.getString(2);
|
||||||
@ -256,6 +266,7 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, M
|
|||||||
protected List<GrantedAuthority> loadGroupAuthorities(String username) {
|
protected List<GrantedAuthority> loadGroupAuthorities(String username) {
|
||||||
return getJdbcTemplate().query(this.groupAuthoritiesByUsernameQuery,
|
return getJdbcTemplate().query(this.groupAuthoritiesByUsernameQuery,
|
||||||
new String[] { username }, new RowMapper<GrantedAuthority>() {
|
new String[] { username }, new RowMapper<GrantedAuthority>() {
|
||||||
|
@Override
|
||||||
public GrantedAuthority mapRow(ResultSet rs, int rowNum)
|
public GrantedAuthority mapRow(ResultSet rs, int rowNum)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
String roleName = getRolePrefix() + rs.getString(3);
|
String roleName = getRolePrefix() + rs.getString(3);
|
||||||
@ -395,8 +406,10 @@ public class JdbcDaoImpl extends JdbcDaoSupport implements UserDetailsService, M
|
|||||||
public void setEnableGroups(boolean enableGroups) {
|
public void setEnableGroups(boolean enableGroups) {
|
||||||
this.enableGroups = enableGroups;
|
this.enableGroups = enableGroups;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setMessageSource(MessageSource messageSource) {
|
public void setMessageSource(MessageSource messageSource) {
|
||||||
|
Assert.notNull(messageSource, "messageSource cannot be null");
|
||||||
this.messages = new MessageSourceAccessor(messageSource);
|
this.messages = new MessageSourceAccessor(messageSource);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,11 @@
|
|||||||
|
|
||||||
package org.springframework.security.core.userdetails.jdbc;
|
package org.springframework.security.core.userdetails.jdbc;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import org.springframework.context.MessageSource;
|
||||||
import org.springframework.security.PopulatedDatabase;
|
import org.springframework.security.PopulatedDatabase;
|
||||||
import org.springframework.security.core.authority.AuthorityUtils;
|
import org.springframework.security.core.authority.AuthorityUtils;
|
||||||
import org.springframework.security.core.userdetails.UserDetails;
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
@ -25,6 +28,10 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.fail;
|
import static org.assertj.core.api.Assertions.fail;
|
||||||
|
import static org.mockito.Matchers.any;
|
||||||
|
import static org.mockito.Matchers.eq;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests {@link JdbcDaoImpl}.
|
* Tests {@link JdbcDaoImpl}.
|
||||||
@ -69,7 +76,8 @@ public class JdbcDaoImplTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCheckDaoOnlyReturnsGrantedAuthoritiesGrantedToUser() throws Exception {
|
public void testCheckDaoOnlyReturnsGrantedAuthoritiesGrantedToUser()
|
||||||
|
throws Exception {
|
||||||
JdbcDaoImpl dao = makePopulatedJdbcDao();
|
JdbcDaoImpl dao = makePopulatedJdbcDao();
|
||||||
UserDetails user = dao.loadUserByUsername("scott");
|
UserDetails user = dao.loadUserByUsername("scott");
|
||||||
assertThat(user.getAuthorities()).hasSize(1);
|
assertThat(user.getAuthorities()).hasSize(1);
|
||||||
@ -187,4 +195,23 @@ public class JdbcDaoImplTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void setMessageSourceWhenNullThenThrowsException() throws Exception {
|
||||||
|
JdbcDaoImpl dao = new JdbcDaoImpl();
|
||||||
|
|
||||||
|
dao.setMessageSource(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void setMessageSourceWhenNotNullThenCanGet() throws Exception {
|
||||||
|
MessageSource source = mock(MessageSource.class);
|
||||||
|
JdbcDaoImpl dao = new JdbcDaoImpl();
|
||||||
|
dao.setMessageSource(source);
|
||||||
|
String code = "code";
|
||||||
|
|
||||||
|
dao.getMessages().getMessage(code);
|
||||||
|
|
||||||
|
verify(source).getMessage(eq(code), any(Object[].class), any(Locale.class));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user