added getByUsername to userinfo repositories and supporting classes, updated calling classes to use this
fixed namedquerypull/210/head
parent
ba24ca1f60
commit
b5ce8d5e8b
|
@ -32,7 +32,8 @@ import com.google.gson.JsonObject;
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name="user_info")
|
@Table(name="user_info")
|
||||||
@NamedQueries({
|
@NamedQueries({
|
||||||
@NamedQuery(name="DefaultUserInfo.getAll", query = "select u from DefaultUserInfo u")
|
@NamedQuery(name="DefaultUserInfo.getAll", query = "select u from DefaultUserInfo u"),
|
||||||
|
@NamedQuery(name="DefaultUserInfo.getByUsername", query = "select u from DefaultUserInfo u WHERE u.preferredUsername = :username")
|
||||||
})
|
})
|
||||||
public class DefaultUserInfo implements UserInfo {
|
public class DefaultUserInfo implements UserInfo {
|
||||||
|
|
||||||
|
|
|
@ -68,4 +68,11 @@ public interface UserInfoRepository {
|
||||||
*/
|
*/
|
||||||
public Collection<? extends UserInfo> getAll();
|
public Collection<? extends UserInfo> getAll();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a UserInfo object by its preferred_username field
|
||||||
|
* @param username
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public UserInfo getByUsername(String username);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
package org.mitre.openid.connect.repository.impl;
|
package org.mitre.openid.connect.repository.impl;
|
||||||
|
|
||||||
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
|
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
|
||||||
|
import static org.mitre.util.jpa.JpaUtil.getSingleResult;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
@ -82,10 +83,21 @@ public class JpaUserInfoRepository implements UserInfoRepository {
|
||||||
@Transactional
|
@Transactional
|
||||||
public Collection<DefaultUserInfo> getAll() {
|
public Collection<DefaultUserInfo> getAll() {
|
||||||
|
|
||||||
TypedQuery<DefaultUserInfo> query = manager.createNamedQuery(
|
TypedQuery<DefaultUserInfo> query = manager.createNamedQuery("DefaultUserInfo.getAll", DefaultUserInfo.class);
|
||||||
"DefaultUserInfo.getAll", DefaultUserInfo.class);
|
|
||||||
|
|
||||||
return query.getResultList();
|
return query.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a single UserInfo object by its username
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public UserInfo getByUsername(String username) {
|
||||||
|
TypedQuery<DefaultUserInfo> query = manager.createNamedQuery("DefaultUserInfo.getByUsername", DefaultUserInfo.class);
|
||||||
|
query.setParameter("username", username);
|
||||||
|
|
||||||
|
return getSingleResult(query.getResultList());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,12 @@ import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A UserDetailsService backed by a UserInfoRepository.
|
||||||
|
*
|
||||||
|
* @author jricher
|
||||||
|
*
|
||||||
|
*/
|
||||||
@Service("userInfoUserDetailsService")
|
@Service("userInfoUserDetailsService")
|
||||||
public class UserInfoUserDetailsService implements UserDetailsService {
|
public class UserInfoUserDetailsService implements UserDetailsService {
|
||||||
|
|
||||||
|
@ -28,25 +34,14 @@ public class UserInfoUserDetailsService implements UserDetailsService {
|
||||||
private List<String> admins = new ArrayList<String>();
|
private List<String> admins = new ArrayList<String>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UserDetails loadUserByUsername(String username)
|
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||||
throws UsernameNotFoundException {
|
UserInfo userInfo = repository.getByUsername(username);
|
||||||
UserInfo userInfo = repository.getByUserId(username);
|
|
||||||
|
|
||||||
if (userInfo != null) {
|
if (userInfo != null) {
|
||||||
|
|
||||||
// TODO: make passwords configurable? part of object?
|
// TODO: make passwords configurable? part of object?
|
||||||
String password = "password";
|
String password = "password";
|
||||||
|
|
||||||
boolean enabled = true;
|
|
||||||
/*
|
|
||||||
* TODO: this was for a MITRE-specific flag
|
|
||||||
if(userInfo.getDeleteFlag() > 0){
|
|
||||||
enabled = false;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
boolean accountNonExpired = true;
|
|
||||||
boolean credentialsNonExpired = true;
|
|
||||||
boolean accountNonLocked = true;
|
|
||||||
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
|
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
|
||||||
authorities.add(ROLE_USER);
|
authorities.add(ROLE_USER);
|
||||||
|
|
||||||
|
@ -55,10 +50,10 @@ public class UserInfoUserDetailsService implements UserDetailsService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: this should really be our own UserDetails wrapper class, shouldn't it?
|
// TODO: this should really be our own UserDetails wrapper class, shouldn't it?
|
||||||
User user = new User(userInfo.getPreferredUsername(), password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
|
User user = new User(userInfo.getUserId(), password, authorities);
|
||||||
return user;
|
return user;
|
||||||
} else {
|
} else {
|
||||||
return null;
|
throw new UsernameNotFoundException("Could not find username: " + username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue