use of com.autentia.tnt.manager.security.exception.SecException in project TNTConcept by autentia.
the class AuthenticationManager method loadUserByUsername.
/**
* Load a User for ACEGI given its user name
*
* @param username user name
* @throws org.acegisecurity.userdetails.UsernameNotFoundException
* @throws org.springframework.dao.DataAccessException
* @return the user object description as specified by ACEGI
*/
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
try {
Version db = Version.getDatabaseVersion();
Version code = Version.getApplicationVersion();
if (db.compareTo(code, Version.MINOR) == 0) {
log.info("loadUserByUsername - getting user " + username + " using Hibernate");
User user = userDAO.searchByLogin(username);
GrantedAuthority[] auths = userRolesService.getAuthorities(user);
if (log.isDebugEnabled()) {
StringBuilder sb = new StringBuilder();
for (GrantedAuthority auth : auths) {
sb.append(auth);
sb.append(" ");
}
log.debug("loadUserByUsername - user roles: " + sb);
}
final Principal principal = new Principal(user, auths);
// setting user preferred Locale
final SettingSearch s = new SettingSearch();
s.setName(SettingPath.GENERAL_PREFERRED_LOCALE);
s.setOwnerId(user.getId());
final List<Setting> vals = settings.search(s, null);
final Setting val = (vals != null && vals.size() > 0) ? vals.get(0) : null;
if (val != null) {
final Locale local = new Locale(val.getValue());
principal.setLocale(local);
}
return principal;
} else {
log.info("loadUserByUsername - getting user " + username + " using JDBC");
return jdbcSearchByLogin(username);
}
} catch (SecException e) {
log.warn("loadUserByUsername - exception", e);
throw new DataRetrievalFailureException("Error getting roles for user: " + username, e);
} catch (DataIntegrityException e) {
log.warn("loadUserByUsername - exception", e);
throw new DataIntegrityViolationException("Inconsistent user name: " + username, e);
} catch (DataNotFoundException e) {
log.warn("loadUserByUsername - exception", e);
throw new UsernameNotFoundException("User not found: " + username, e);
} catch (DataAccException e) {
log.warn("loadUserByUsername - exception", e);
throw new DataRetrievalFailureException("Error getting user: " + username, e);
} catch (SQLException e) {
log.warn("loadUserByUsername - exception", e);
throw new DataRetrievalFailureException("Error getting user: " + username, e);
}
}
Aggregations