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
|
||||
@Table(name="user_info")
|
||||
@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 {
|
||||
|
||||
|
|
|
@ -66,6 +66,13 @@ public interface UserInfoRepository {
|
|||
*
|
||||
* @return the UserInfo collection, or null
|
||||
*/
|
||||
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;
|
||||
|
||||
import static org.mitre.util.jpa.JpaUtil.saveOrUpdate;
|
||||
import static org.mitre.util.jpa.JpaUtil.getSingleResult;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
|
@ -82,10 +83,21 @@ public class JpaUserInfoRepository implements UserInfoRepository {
|
|||
@Transactional
|
||||
public Collection<DefaultUserInfo> getAll() {
|
||||
|
||||
TypedQuery<DefaultUserInfo> query = manager.createNamedQuery(
|
||||
"DefaultUserInfo.getAll", DefaultUserInfo.class);
|
||||
TypedQuery<DefaultUserInfo> query = manager.createNamedQuery("DefaultUserInfo.getAll", DefaultUserInfo.class);
|
||||
|
||||
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.stereotype.Service;
|
||||
|
||||
/**
|
||||
* A UserDetailsService backed by a UserInfoRepository.
|
||||
*
|
||||
* @author jricher
|
||||
*
|
||||
*/
|
||||
@Service("userInfoUserDetailsService")
|
||||
public class UserInfoUserDetailsService implements UserDetailsService {
|
||||
|
||||
|
@ -28,25 +34,14 @@ public class UserInfoUserDetailsService implements UserDetailsService {
|
|||
private List<String> admins = new ArrayList<String>();
|
||||
|
||||
@Override
|
||||
public UserDetails loadUserByUsername(String username)
|
||||
throws UsernameNotFoundException {
|
||||
UserInfo userInfo = repository.getByUserId(username);
|
||||
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
|
||||
UserInfo userInfo = repository.getByUsername(username);
|
||||
|
||||
if (userInfo != null) {
|
||||
|
||||
// TODO: make passwords configurable? part of object?
|
||||
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>();
|
||||
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?
|
||||
User user = new User(userInfo.getPreferredUsername(), password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
|
||||
User user = new User(userInfo.getUserId(), password, authorities);
|
||||
return user;
|
||||
} else {
|
||||
return null;
|
||||
throw new UsernameNotFoundException("Could not find username: " + username);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue