package egovframework.com.cmm.util;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import egovframework.com.cmm.service.EgovUserDetailsService;
/**
* EgovUserDetails Helper 클래스
*
* @author sjyoon
* @since 2009.06.01
* @version 1.0
* @see
*
*
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- ------------- ----------------------
* 2009.03.10 sjyoon 최초 생성
* 2011.07.01 서준식 interface 생성후 상세 로직의 분리
*
*/
public class EgovUserDetailsHelper {
private static final String LOGIN_URL = "/uat/uia/egovLoginUsr.do";
private static final String INDEX_URL = "/index.do";
private static final String ADMIN_URL = "/admin/index.do";
private static final String LOGIN_ADMIN_URL = "/uat/uia/egovLoginUsr.do";
static EgovUserDetailsService egovUserDetailsService;
public EgovUserDetailsService getEgovUserDetailsService() {
return egovUserDetailsService;
}
public void setEgovUserDetailsService(EgovUserDetailsService egovUserDetailsService) {
EgovUserDetailsHelper.egovUserDetailsService = egovUserDetailsService;
}
/**
* 인증된 사용자객체를 VO형식으로 가져온다.
* @return Object - 사용자 ValueObject
*/
public static Object getAuthenticatedUser() {
return egovUserDetailsService.getAuthenticatedUser();
}
/**
* 인증된 사용자의 권한 정보를 가져온다.
*
* @return List - 사용자 권한정보 목록
*/
public static List getAuthorities() {
return egovUserDetailsService.getAuthorities();
}
/**
* 인증된 사용자 여부를 체크한다.
* @return Boolean - 인증된 사용자 여부(TRUE / FALSE)
*/
public static Boolean isAuthenticated() {
return egovUserDetailsService.isAuthenticated();
}
/**
* 특정 권한 여부를 체크한다.
* @Author : 임종호
* @Date : 2021. 7. 5.
* @Method Name : isRole
* @return : Boolean - 특정 권한 여부 (true / false)
*/
public static Boolean isRole(final String strAutho) {
if (StringUtils.isBlank(strAutho)) {
return false;
}
List authorList = getAuthorities ();
if (authorList != null) {
for (String s : authorList) {
if (s.indexOf (strAutho) != -1) {
return true;
}
}
}
return false;
}
/**
* 특정 권한 배열 여부를 체크한다.
* @Author : 임종호
* @Date : 2021. 7. 5.
* @Method Name : isRole
* @return : Boolean - 특정 권한 여부 (true / false)
*/
public static Boolean isRole(final String[] arrAutho) {
if (arrAutho.length == 0) {
return false;
}
List authorList = getAuthorities ();
if (authorList != null) {
for (String s : authorList) {
for (String a : arrAutho) {
if (s.indexOf (a) != -1) {
return true;
}
}
}
}
return false;
}
/**
* 관리자 권한 확인
* @Author : 임종호
* @Date : 2022. 2. 7
* @Method Name : isRoleAdmin
* @return : Boolean
*/
public static Boolean isRoleAdmin() {
String role = Authory.ROLE_ADMIN;
return isRole(role);
}
/**
* 로그인 페이지 이동
* @Author : 임종호
* @Date : 2021. 7. 5.
* @Method Name : getLoginPage
* @return : String
*/
public static String getLoginPage() {
return "redirect:" + getContextPath() + LOGIN_URL;
}
/**
* Index 페이지 이동
* @Author : 임종호
* @Date : 2021. 9. 27.
* @Method Name : getIndexPage
* @return : String
*/
public static String getIndexPage() {
return "redirect:" + getContextPath() + INDEX_URL;
}
/**
* 관리자 페이지 이동
* @Author : 임종호
* @Date : 2021. 9. 27.
* @Method Name : getAdminPage
* @return : String
*/
public static String getAdminPage() {
return "redirect:" + getContextPath() + ADMIN_URL;
}
/**
* 관리자 로그인 이동
* @Author : 임종호
* @Date : 2021. 9. 27.
* @Method Name : getAdminLogin
* @return : String
*/
public static String getAdminLogin() {
return "redirect:" + getContextPath() + LOGIN_ADMIN_URL;
}
/**
* contextPath 반환(request 없을때)
* @Author : 임종호
* @Date : 2022. 2. 8
* @Method Name : getContextPath
* @return : String
*/
public static String getContextPath() {
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
String contextPath = attr.getRequest().getContextPath();
return contextPath;
}
}