package nlib.security;

import java.util.Arrays;
import java.util.HashMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Repository;

import egovframework.com.cmm.service.impl.EgovComAbstractDAO;
import nlib.util.StringUtil;

/**
 * <pre>
 * @Class Name : SecUserDAO.java
 * 
 * @Description : 스프링 시큐리티용 사용자VO인  UserDetails(SecUserVO)의 형식으로 사용자 정보를 조회하여 저장하게 제공하는 DAO 
 * 
 * 
 * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
 *
 * </pre>
 *
 * @ ------------    --------    ---------------------------
 * @ 수정일                     수정자             수정내용
 * @ ------------    --------    ---------------------------
 * @ 2021. 7. 9.     KNKIM       최초 생성
 * @ 2021.08.13.     KNKIM       RESTfulAPI -> DB직접 접근 방식으로 변경  
 *
 * 
 * @author 이씨플라자 * DIGITALSHIP KNKIM
 * @since 2021. 7. 9.
 * @version 1.0
 *
 */
@Repository("secUserDAO")
public class SecUserDAO extends EgovComAbstractDAO {

	private static final Logger log = LoggerFactory.getLogger(SecUserDAO.class);
	
    public SecUserVO loadUserByUsername(String loginUserId) {
    	
    	SecUserVO uInfo = (SecUserVO)selectOne("SecUserDAO.loadUserByUsername", loginUserId);
    	
    	if(uInfo == null) {
    		uInfo = new SecUserVO();
    	} else {
    		// 개인정보 복호화
    		uInfo.decodePrivateInfo();
    		
        	// 다중 권한 설정
        	String authorities = (String)uInfo.getAuthorityList();
        	if(StringUtil.isEmpty(authorities)) {
        		uInfo.addAuthority(SecUserVO.DEFAULT_ROLE);
        	} else {
        		String[] authArr = authorities.split(",");
        		for(String auth : authArr) {
        			uInfo.addAuthority(auth);
        		}
        	}
    	}
    	
        return uInfo;
    }
    
}
