Advertisement
Guest User

Untitled

a guest
May 23rd, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.75 KB | None | 0 0
  1. package com.grs.api.config.security;
  2.  
  3. import com.grs.api.model.OISFUserType;
  4. import com.grs.api.model.OfficeInformation;
  5. import com.grs.api.model.UserInformation;
  6. import com.grs.api.model.UserType;
  7. import com.grs.core.dao.GrsRoleDAO;
  8. import com.grs.core.dao.OfficesGroDAO;
  9. import com.grs.core.dao.UserDAO;
  10. import com.grs.core.domain.grs.GrsRole;
  11. import com.grs.core.domain.grs.OfficesGRO;
  12. import com.grs.core.domain.projapoti.*;
  13. import lombok.extern.slf4j.Slf4j;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.security.core.userdetails.UserDetails;
  16. import org.springframework.security.core.userdetails.UserDetailsService;
  17. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  18. import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
  19. import org.springframework.stereotype.Service;
  20.  
  21. import java.util.ArrayList;
  22. import java.util.List;
  23. import java.util.stream.Collectors;
  24.  
  25. /**
  26.  * Created by Acer on 10/5/2017.
  27.  */
  28. @Slf4j
  29. @Service
  30. public class OISFUserDetailsServiceImpl implements UserDetailsService {
  31.     @Autowired
  32.     private UserDAO userDAO;
  33.     @Autowired
  34.     private OfficesGroDAO officesGroDAO;
  35.     @Autowired
  36.     private BCryptPasswordEncoder bCryptPasswordEncoder;
  37.     @Autowired
  38.     private OISFUserDetailsServiceImpl oisfUserDetailsService;
  39.     @Autowired
  40.     private GrsRoleDAO grsRoleDAO;
  41.  
  42.     @Override
  43.     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
  44.         User user = this.userDAO.findByUsername(username);
  45.         if (user == null) {
  46.             throw new UsernameNotFoundException("Invalid credentials");
  47.         }
  48.  
  49.         UserInformation userInformation = this.oisfUserDetailsService.getUserInfo(user);
  50.         GrsRole grsRole = this.grsRoleDAO.findByRole(userInformation.getOisfUserType().toString());
  51.         List<GrantedAuthorityImpl> grantedAuthorities = grsRole.getPermissions().stream()
  52.                 .map(permission -> {
  53.                     return GrantedAuthorityImpl.builder()
  54.                             .role(permission.getName())
  55.                             .build();
  56.                 }).collect(Collectors.toList());
  57.  
  58.  
  59.         return UserDetailsImpl.builder()
  60.                 .username(user.getUsername())
  61.                 .password(user.getPassword())
  62.                 .isAccountAuthenticated(user.getAuthenticated())
  63.                 .grantedAuthorities(grantedAuthorities)
  64.                 .userInformation(this.getUserInfo(user))
  65.                 .build();
  66.     }
  67.  
  68.     public UserInformation getUserInfo(User user) {
  69.         OfficeInformation officeInformation = getOfficeInformationFromUser(user);
  70.  
  71.         List<OfficesGRO> officesGRO = new ArrayList<>();
  72.         if (officeInformation != null && officeInformation.getOfficeUnitOrganogramId() != null) {
  73.             officesGRO = this.officesGroDAO
  74.                     .findByAppealOfficeUnitOrganogramId(officeInformation.getOfficeUnitOrganogramId());
  75.         }
  76.         Boolean isAppealOfficer = false;
  77.  
  78.         if (officesGRO != null) {
  79.             if (officesGRO.size() > 0) {
  80.                 isAppealOfficer = true;
  81.             }
  82.         }
  83.  
  84.         return UserInformation
  85.                 .builder()
  86.                 .userId(user.getId())
  87.                 .username(user.getUsername())
  88.                 .userType(UserType.OISF_USER)
  89.                 .oisfUserType(getOISFUserTypeFromRole(user))
  90.                 .officeInformation(officeInformation)
  91.                 .isAppealOfficer(isAppealOfficer)
  92.                 .build();
  93.     }
  94.  
  95.     public OfficeInformation getOfficeInformationFromUser(User user) {
  96.         if (user.getEmployeeRecord() == null) {
  97.             return null;
  98.         }
  99.         if (user.getEmployeeRecord().getEmployeeOffices() == null) {
  100.             return null;
  101.         }
  102.  
  103.         List<EmployeeOffice> userEmployeeOffices = user.getEmployeeRecord()
  104.                 .getEmployeeOffices()
  105.                 .stream()
  106.                 .filter(employeeOffice -> (employeeOffice.getStatus()))
  107.                 .collect(Collectors.toList());
  108.  
  109.         if (userEmployeeOffices.size() < 1) {
  110.             return null;
  111.         }
  112.         Office office = userEmployeeOffices.get(0).getOffice();
  113.         OfficeUnitOrganogram officeUnitOrganogram = userEmployeeOffices.get(0).getOfficeUnitOrganogram();
  114.  
  115.         OfficeInformation officeInformation = OfficeInformation.builder()
  116.                 .officeId(office.getId())
  117.                 .officeMinistryId(office.getOfficeMinistry().getId())
  118.                 .officeNameBangla(office.getNameBangla())
  119.                 .officeNameEnglish(office.getNameEnglish())
  120.                 .designation(userEmployeeOffices.get(0).getDesignation())
  121.                 .employeeRecordId(user.getEmployeeRecord().getId())
  122.                 .name(user.getEmployeeRecord().getNameBangla())
  123.                 .officeUnitOrganogramId(officeUnitOrganogram.getId())
  124.                 .layerLevel(Long.valueOf(office.getOfficeLayer().getLayerLevel()))
  125.                 .geoDivisionId(Long.valueOf(office.getDivisionId()))
  126.                 .geoDistrictId(Long.valueOf(office.getDistrictId()))
  127.                 .build();
  128.  
  129.         return officeInformation;
  130.     }
  131.  
  132.     public OISFUserType getOISFUserTypeFromRole(User user) {
  133.         if (user.getRole().getName().equals("Admin")) {
  134.             return OISFUserType.SUPER_ADMIN;
  135.         }
  136.         if (user.getEmployeeRecord() == null) {
  137.             return null;
  138.         }
  139.         List<EmployeeOffice> userEmployeeOffices = user.getEmployeeRecord()
  140.                 .getEmployeeOffices()
  141.                 .stream()
  142.                 .filter(employeeOffice -> (employeeOffice.getStatus()))
  143.                 .collect(Collectors.toList());
  144.  
  145.         if (userEmployeeOffices.size() < 1) {
  146.             return null;
  147.         }
  148.  
  149.         Office office = userEmployeeOffices.get(0).getOffice();
  150.         OfficeUnitOrganogram officeUnitOrganogram = userEmployeeOffices.get(0).getOfficeUnitOrganogram();
  151.         OfficesGRO officesGRO = officesGroDAO.findOfficesGROByOfficeId(office.getId());
  152.  
  153.         List<OfficesGRO> officesGROForOA = new ArrayList<>();
  154.         if (officeUnitOrganogram != null) {
  155.             officesGROForOA = this.officesGroDAO
  156.                     .findOfficeAdminByOfficeUnitOrganogramId(officeUnitOrganogram.getId());
  157.         }
  158.  
  159.         if (officesGRO != null && officesGRO.getGroOfficeUnitOrganogramId().equals(officeUnitOrganogram.getId())) {
  160.             return OISFUserType.GRO;
  161.         } else if (userEmployeeOffices.get(0).getIsOfficeHead()) {
  162.             return OISFUserType.HEAD_OF_OFFICE;
  163.         } else if (officesGROForOA.size() > 0) {
  164.            return OISFUserType.OFFICE_ADMIN;
  165.         } else {
  166.             return OISFUserType.SERVICE_OFFICER;
  167.         }
  168.     }
  169.  
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement