JwtUserDetailsService
Wed Feb 01 2023 03:39:08 GMT+0000 (Coordinated Universal Time)
Saved by @namnt
package Viettel.authen.service; import java.util.ArrayList; import java.util.List; import Viettel.authen.entity.Role; import Viettel.authen.entity.User; import Viettel.authen.entity.UserGroup; import Viettel.authen.repository.UserRepository; import Viettel.authen.repository.RoleRepository; import Viettel.authen.repository.UserGroupRespository; import Viettel.authen.request.UserRequest; import Viettel.authen.security.PasswordEncode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.GrantedAuthority; 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; @Service public class JwtUserDetailsService implements UserDetailsService { @Autowired UserRepository userRepository; @Autowired UserGroupRespository userGroupRespository; @Autowired RoleRepository roleRepository; @Autowired PasswordEncode passwordEncode; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User user = userRepository.findByUserName(username); if (user == null) { System.out.println("User not found! " + username); throw new UsernameNotFoundException("User " + username + " was not found in the database"); } List<UserGroup> userGroup= userGroupRespository.findUserGroupsByUserId(user.getUserId()); List<String> roles= new ArrayList<>(); for(int i=0;i<userGroup.size();i++){ Role role= roleRepository.findRoleByRoleId(userGroup.get(i).getRoleId()); roles.add(role.getRoleName()); } List<GrantedAuthority> grantList = new ArrayList<GrantedAuthority>(); if (roles != null) { for (String role : roles) { GrantedAuthority authority = new SimpleGrantedAuthority(role); grantList.add(authority); } } return new org.springframework.security.core.userdetails.User(user.getUserName(), user.getPassword(), grantList); } public boolean saveNewAccount(UserRequest userRequest) { if(!userRepository.existsByUserName(userRequest.getUsername())) { User newUser = new User(); newUser.setUserName(userRequest.getUsername()); newUser.setPassword(passwordEncode.passwordEncoder().encode(userRequest.getPassword())); userRepository.save(newUser); int userId=userRepository.findByUserName(newUser.getUserName()).getUserId(); int roleId=roleRepository.findRoleByRoleName(userRequest.getRole()).getRoleId(); if(saveNewUserGroup(userId,roleId)){ return true; } return false; } return false; } public boolean saveNewUserGroup(int userID, int roleId) { if(!userGroupRespository.existsByRoleId(roleId)) { if(!userGroupRespository.existsByUserId(userID)) { UserGroup newUserGroup = new UserGroup(); newUserGroup.setUserId(userID); newUserGroup.setRoleId(roleId); userGroupRespository.save(newUserGroup); return true; } } return false; } }
Comments