75 lines
2.7 KiB
Java
75 lines
2.7 KiB
Java
package org.baeldung.security;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.List;
|
|
|
|
import org.springframework.security.core.userdetails.UserDetails;
|
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
|
import org.baeldung.persistence.dao.UserRepository;
|
|
import org.baeldung.persistence.model.User;
|
|
import org.baeldung.persistence.service.IUserService;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.context.MessageSource;
|
|
import org.springframework.security.core.GrantedAuthority;
|
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
@Service("userDetailsService")
|
|
@Transactional
|
|
public class MyUserDetailsService implements UserDetailsService {
|
|
|
|
@Autowired
|
|
private UserRepository userRepository;
|
|
@Autowired
|
|
private IUserService service;
|
|
@Autowired
|
|
private MessageSource messages;
|
|
|
|
public MyUserDetailsService() {
|
|
|
|
}
|
|
|
|
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
|
|
boolean enabled = true;
|
|
boolean accountNonExpired = true;
|
|
boolean credentialsNonExpired = true;
|
|
boolean accountNonLocked = true;
|
|
try {
|
|
User user = userRepository.findByEmail(email);
|
|
if (user == null) {
|
|
return new org.springframework.security.core.userdetails.User(" ", " ", enabled, true, true, true, getAuthorities(new Integer(1)));
|
|
}
|
|
|
|
return new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(), user.isEnabled(), accountNonExpired, credentialsNonExpired, accountNonLocked, getAuthorities(user.getRole().getRole()));
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
}
|
|
|
|
private Collection<? extends GrantedAuthority> getAuthorities(Integer role) {
|
|
List<GrantedAuthority> authList = getGrantedAuthorities(getRoles(role));
|
|
return authList;
|
|
}
|
|
|
|
public List<String> getRoles(Integer role) {
|
|
List<String> roles = new ArrayList<String>();
|
|
if (role.intValue() == 2) {
|
|
roles.add("ROLE_ADMIN");
|
|
} else if (role.intValue() == 1) {
|
|
roles.add("ROLE_USER");
|
|
}
|
|
return roles;
|
|
}
|
|
|
|
private static List<GrantedAuthority> getGrantedAuthorities(List<String> roles) {
|
|
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
|
|
for (String role : roles) {
|
|
authorities.add(new SimpleGrantedAuthority(role));
|
|
}
|
|
return authorities;
|
|
}
|
|
}
|