work on registration
This commit is contained in:
parent
55f1a9b1bf
commit
7b40f74b96
@ -4,5 +4,5 @@ import org.baeldung.persistence.model.Privilege;
|
|||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
|
||||||
public interface PrivilegeRepository extends JpaRepository<Privilege, Long> {
|
public interface PrivilegeRepository extends JpaRepository<Privilege, Long> {
|
||||||
public Privilege findByName(String name);
|
Privilege findByName(String name);
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
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.RoleRepository;
|
import org.baeldung.persistence.dao.RoleRepository;
|
||||||
import org.baeldung.persistence.dao.UserRepository;
|
import org.baeldung.persistence.dao.UserRepository;
|
||||||
import org.baeldung.persistence.model.Privilege;
|
import org.baeldung.persistence.model.Privilege;
|
||||||
@ -17,6 +14,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.context.MessageSource;
|
import org.springframework.context.MessageSource;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||||
|
import org.springframework.security.core.userdetails.UserDetails;
|
||||||
|
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||||
|
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -34,43 +34,43 @@ public class MyUserDetailsService implements UserDetailsService {
|
|||||||
private RoleRepository roleRepository;
|
private RoleRepository roleRepository;
|
||||||
|
|
||||||
public MyUserDetailsService() {
|
public MyUserDetailsService() {
|
||||||
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
|
// API
|
||||||
boolean enabled = true;
|
|
||||||
boolean accountNonExpired = true;
|
@Override
|
||||||
boolean credentialsNonExpired = true;
|
public UserDetails loadUserByUsername(final String email) throws UsernameNotFoundException {
|
||||||
boolean accountNonLocked = true;
|
|
||||||
try {
|
try {
|
||||||
User user = userRepository.findByEmail(email);
|
final User user = userRepository.findByEmail(email);
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
return new org.springframework.security.core.userdetails.User(" ", " ", enabled, true, true, true, getAuthorities(roleRepository.findByName("ROLE_USER")));
|
return new org.springframework.security.core.userdetails.User(" ", " ", true, true, true, true, getAuthorities(roleRepository.findByName("ROLE_USER")));
|
||||||
}
|
}
|
||||||
|
|
||||||
return new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(), user.isEnabled(), accountNonExpired, credentialsNonExpired, accountNonLocked, getAuthorities(user.getRole()));
|
return new org.springframework.security.core.userdetails.User(user.getEmail(), user.getPassword(), user.isEnabled(), true, true, true, getAuthorities(user.getRole()));
|
||||||
} catch (Exception e) {
|
} catch (final Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Collection<? extends GrantedAuthority> getAuthorities(Role roleName) {
|
// UTIL
|
||||||
List<GrantedAuthority> authList = getGrantedAuthorities(getPrivileges(roleName));
|
|
||||||
return authList;
|
private final Collection<? extends GrantedAuthority> getAuthorities(final Role roleName) {
|
||||||
|
return getGrantedAuthorities(getPrivileges(roleName));
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getPrivileges(Role role) {
|
private final List<String> getPrivileges(final Role role) {
|
||||||
List<String> privileges = new ArrayList<String>();
|
final List<String> privileges = new ArrayList<String>();
|
||||||
Collection<Privilege> collection = role.getPrivileges();
|
final Collection<Privilege> collection = role.getPrivileges();
|
||||||
for (Privilege item : collection) {
|
for (final Privilege item : collection) {
|
||||||
privileges.add(item.getName());
|
privileges.add(item.getName());
|
||||||
}
|
}
|
||||||
return privileges;
|
return privileges;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<GrantedAuthority> getGrantedAuthorities(List<String> privileges) {
|
private final List<GrantedAuthority> getGrantedAuthorities(final List<String> privileges) {
|
||||||
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
|
final List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
|
||||||
for (String privilege : privileges) {
|
for (final String privilege : privileges) {
|
||||||
authorities.add(new SimpleGrantedAuthority(privilege));
|
authorities.add(new SimpleGrantedAuthority(privilege));
|
||||||
}
|
}
|
||||||
return authorities;
|
return authorities;
|
||||||
|
@ -25,34 +25,36 @@ public class InitialDataLoader implements ApplicationListener<ContextRefreshedEv
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void onApplicationEvent(ContextRefreshedEvent event) {
|
public void onApplicationEvent(final ContextRefreshedEvent event) {
|
||||||
if (alreadyExist)
|
if (alreadyExist)
|
||||||
return;
|
return;
|
||||||
if(roleRepository.findAll().size() > 0 || privilegeRepository.findAll().size() > 0)
|
if (roleRepository.count() > 0 || privilegeRepository.count() > 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//== create initial roles
|
|
||||||
Role admin = new Role("ROLE_ADMIN");
|
|
||||||
Role user = new Role("ROLE_USER");
|
|
||||||
|
|
||||||
// == create initial privileges
|
// == create initial privileges
|
||||||
Privilege readPrivilege = new Privilege("READ_PRIVILEGE");
|
final Privilege readPrivilege = new Privilege("READ_PRIVILEGE");
|
||||||
Privilege writePrivilege = new Privilege("WRITE_PRIVILEGE");
|
final Privilege writePrivilege = new Privilege("WRITE_PRIVILEGE");
|
||||||
|
|
||||||
//== link roles and privileges
|
|
||||||
Privilege[] adminPrivileges = {readPrivilege, writePrivilege};
|
|
||||||
admin.setPrivileges(Arrays.asList(adminPrivileges));
|
|
||||||
|
|
||||||
Privilege[] userPrivileges = {readPrivilege};
|
|
||||||
user.setPrivileges(Arrays.asList(userPrivileges));
|
|
||||||
|
|
||||||
//== save to database
|
|
||||||
privilegeRepository.save(readPrivilege);
|
privilegeRepository.save(readPrivilege);
|
||||||
privilegeRepository.save(writePrivilege);
|
privilegeRepository.save(writePrivilege);
|
||||||
|
|
||||||
|
// == create initial roles
|
||||||
|
final Role admin = new Role("ROLE_ADMIN");
|
||||||
|
final Role user = new Role("ROLE_USER");
|
||||||
|
|
||||||
|
// == link roles and privileges
|
||||||
|
admin.setPrivileges(Arrays.asList(readPrivilege, writePrivilege));
|
||||||
|
user.setPrivileges(Arrays.asList(readPrivilege));
|
||||||
|
|
||||||
roleRepository.save(admin);
|
roleRepository.save(admin);
|
||||||
roleRepository.save(user);
|
roleRepository.save(user);
|
||||||
|
|
||||||
alreadyExist = true;
|
alreadyExist = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final void createPrivilegeIfNotFound(final Privilege privilege) {
|
||||||
|
if (privilegeRepository.findByName(privilege.getName()) != null) {
|
||||||
|
privilegeRepository.save(privilege);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user