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; | ||||||
| 
 | 
 | ||||||
| @ -32,45 +32,45 @@ public class MyUserDetailsService implements UserDetailsService { | |||||||
|     private MessageSource messages; |     private MessageSource messages; | ||||||
|     @Autowired |     @Autowired | ||||||
|     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; | ||||||
|  | |||||||
| @ -13,46 +13,48 @@ import org.springframework.stereotype.Component; | |||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
| 
 | 
 | ||||||
| @Component | @Component | ||||||
| public class InitialDataLoader implements ApplicationListener<ContextRefreshedEvent>{ | public class InitialDataLoader implements ApplicationListener<ContextRefreshedEvent> { | ||||||
|      | 
 | ||||||
|     boolean alreadyExist = false; |     boolean alreadyExist = false; | ||||||
|      | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private RoleRepository roleRepository; |     private RoleRepository roleRepository; | ||||||
|      | 
 | ||||||
|     @Autowired |     @Autowired | ||||||
|     private PrivilegeRepository privilegeRepository; |     private PrivilegeRepository privilegeRepository; | ||||||
| 
 | 
 | ||||||
|     @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 |         // == create initial privileges | ||||||
|         Role admin = new Role("ROLE_ADMIN"); |         final Privilege readPrivilege = new Privilege("READ_PRIVILEGE"); | ||||||
|         Role user = new Role("ROLE_USER"); |         final Privilege writePrivilege = new Privilege("WRITE_PRIVILEGE"); | ||||||
|          |  | ||||||
|         //== create initial privileges |  | ||||||
|         Privilege readPrivilege = new Privilege("READ_PRIVILEGE"); |  | ||||||
|         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