File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package itn.let.uat.uap.web;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import org.springmodules.validation.commons.DefaultBeanValidator;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.fdl.security.userdetails.util.EgovUserDetailsHelper;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import itn.com.cmm.EgovMessageSource;
import itn.com.cmm.LoginVO;
import itn.com.cmm.util.RedirectUrlMaker;
import itn.let.sym.site.service.EgovSiteManagerService;
import itn.let.uat.uap.service.EgovLoginPolicyService;
import itn.let.uat.uap.service.LoginPolicy;
import itn.let.uat.uap.service.LoginPolicyVO;
/**
* 로그인정책에 대한 controller 클래스를 정의한다.
* 로그인정책에 대한 등록, 수정, 삭제, 조회, 반영확인 기능을 제공한다.
* 로그인정책의 조회기능은 목록조회, 상세조회로 구분된다.
* @author 공통서비스개발팀 lee.m.j
* @since 2009.08.03
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.08.03 lee.m.j 최초 생성
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* </pre>
*/
@Controller
public class EgovLoginPolicyController {
@Resource(name = "egovMessageSource")
EgovMessageSource egovMessageSource;
@Resource(name = "egovLoginPolicyService")
EgovLoginPolicyService egovLoginPolicyService;
@Resource(name = "IpGroupPolicyIdGnrService")
private EgovIdGnrService idgenServicePolice;
@Resource(name = "egovSiteManagerService")
private EgovSiteManagerService egovSiteManagerService;
@Autowired
private DefaultBeanValidator beanValidator;
//배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"}
private String[][] loginPolicyExcelValue ={
{"0" ,"번호" , "1" , "" },
{"1", "사이트명" , "ITN" , "[코드]"},
{"2", "사용그룹" , "로컬아이피", ""},
{"3", "IP정보" , "192.168.0", ""},
{"4", "등록자" , "admin", "[코드]"},
{"5", "등록일" , "2018-11-28", "(날짜형식)"},
{"6", "수정자" , "admin4", ""},
{"7", "수정일" ,"2019-10-31", "(날짜형식)"}
} ;
/**
* 로그인정책 목록 조회화면으로 이동한다.
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/selectLoginPolicyListView.do")
public String selectLoginPolicyListView() throws Exception {
return "/uat/uap/EgovLoginPolicyList";
}
/**
* 로그인정책 목록을 조회한다.
* @param loginPolicyVO - 로그인정책 VO
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/selectLoginPolicyList.do")
public String selectLoginPolicyList( @RequestParam Map<?, ?> commandMap , String[] adminAccessIp , @ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, ModelMap model) throws Exception {
if(commandMap.get("adminAccessIpFlag") !=null && adminAccessIp.length != 0){
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginPolicyVO.setEmplyrId(user.getId());
for(String accessIp:adminAccessIp) {
loginPolicyVO.setIpInfo(accessIp);
egovLoginPolicyService.insertAdminLoginIp(loginPolicyVO) ;
}
}
/** paging */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(loginPolicyVO.getPageIndex());
paginationInfo.setRecordCountPerPage(loginPolicyVO.getPageUnit());
paginationInfo.setPageSize(loginPolicyVO.getPageSize());
loginPolicyVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
loginPolicyVO.setLastIndex(paginationInfo.getLastRecordIndex());
loginPolicyVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
loginPolicyVO.setLoginPolicyList(egovLoginPolicyService.selectLoginPolicyList(loginPolicyVO));
model.addAttribute("loginPolicyList", loginPolicyVO.getLoginPolicyList());
int totCnt = egovLoginPolicyService.selectLoginPolicyListTotCnt(loginPolicyVO);
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
//model.addAttribute("message", egovMessageSource.getMessage("success.common.select"));
/*관리자 접속 IP 정보 조회*/
LoginPolicyVO tempLoginPolicyVO = new LoginPolicyVO();
List<LoginPolicyVO> adminLoginIpList = egovLoginPolicyService.selectAdminLoginIpList(tempLoginPolicyVO) ;
model.addAttribute("adminLoginIpList", adminLoginIpList);
return "/uat/uap/EgovLoginPolicyList";
}
/**
* 로그인정책 목록의 상세정보를 조회한다.
* @param loginPolicyVO - 로그인정책 VO
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/getLoginPolicy.do")
public String selectLoginPolicy(@RequestParam("emplyrId") String emplyrId, @ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, ModelMap model) throws Exception {
loginPolicyVO.setEmplyrId(emplyrId);
model.addAttribute("loginPolicy", egovLoginPolicyService.selectLoginPolicy(loginPolicyVO));
LoginPolicyVO vo = (LoginPolicyVO) model.get("loginPolicy");
if (vo.getRegYn().equals("N")){
return "/uat/uap/EgovLoginPolicyRegist";
}else{
return "/uat/uap/EgovLoginPolicyRegist";
//return "/uat/uap/EgovLoginPolicyUpdt";
}
}
/**
* 로그인정책 정보 등록화면으로 이동한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/addLoginPolicyView.do")
public String insertLoginPolicyView(@RequestParam("emplyrId") String emplyrId, @ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, ModelMap model) throws Exception {
loginPolicyVO.setEmplyrId(emplyrId);
model.addAttribute("loginPolicy", egovLoginPolicyService.selectLoginPolicy(loginPolicyVO));
model.addAttribute("message", egovMessageSource.getMessage("success.common.select"));
return "/uat/uap/EgovLoginPolicyRegist";
}
/**
* 로그인정책 정보를 신규로 등록한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/addLoginPolicy.do")
public String insertLoginPolicy(@ModelAttribute("loginPolicy") LoginPolicy loginPolicy, BindingResult bindingResult, RedirectAttributes redirectAttributes, ModelMap model) throws Exception {
beanValidator.validate(loginPolicy, bindingResult); //validation 수행
if (bindingResult.hasErrors()) {
model.addAttribute("loginPolicyVO", loginPolicy);
return "/uat/uap/EgovLoginPolicyRegist";
} else {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginPolicy.setUserId(user.getId());
egovLoginPolicyService.insertLoginPolicy(loginPolicy);
model.addAttribute("message", egovMessageSource.getMessage("success.common.update"));
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uap/selectLoginPolicyList.do");
return redirectUrlMaker.getRedirectUrl();
//return "forward:/uat/uap/getLoginPolicy.do";
}
}
/**
* 기 등록된 로그인정책 정보를 수정한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/updtLoginPolicy.do")
public String updateLoginPolicy(@ModelAttribute("loginPolicy") LoginPolicy loginPolicy, BindingResult bindingResult, ModelMap model) throws Exception {
beanValidator.validate(loginPolicy, bindingResult); //validation 수행
if (bindingResult.hasErrors()) {
model.addAttribute("loginPolicyVO", loginPolicy);
return "/uat/uap/EgovLoginPolicyUpdt";
} else {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginPolicy.setUserId(user.getId());
egovLoginPolicyService.updateLoginPolicy(loginPolicy);
model.addAttribute("message", egovMessageSource.getMessage("success.common.update"));
return "forward:/uat/uap/selectLoginPolicyList.do";
}
}
/**
* 기 등록된 로그인정책 정보를 삭제한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/removeLoginPolicy.do")
public String deleteLoginPolicy(@ModelAttribute("loginPolicy") LoginPolicy loginPolicy, ModelMap model) throws Exception {
egovLoginPolicyService.deleteLoginPolicy(loginPolicy);
model.addAttribute("message", egovMessageSource.getMessage("success.common.delete"));
return "forward:/uat/uap/selectLoginPolicyList.do";
}
/**
* 로그인그룹 정책 목록을 조회한다.
* @param loginPolicyVO - 로그인정책 VO
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/selectLoginGroupPolicyList.do")
public String selectLoginGroupPolicyList( @RequestParam Map<?, ?> commandMap , String[] adminAccessIp ,
@ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO,
ModelMap model, HttpSession session) throws Exception {
if(commandMap.get("adminAccessIpFlag") !=null && adminAccessIp.length != 0){
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginPolicyVO.setEmplyrId(user.getId());
for(String accessIp:adminAccessIp) {
loginPolicyVO.setIpInfo(accessIp);
egovLoginPolicyService.insertAdminLoginIp(loginPolicyVO) ;
}
}
if(loginPolicyVO.getPageUnit() != 10) {
loginPolicyVO.setPageUnit(loginPolicyVO.getPageUnit());
}
/** paging */
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(loginPolicyVO.getPageIndex());
paginationInfo.setRecordCountPerPage(loginPolicyVO.getPageUnit());
paginationInfo.setPageSize(loginPolicyVO.getPageSize());
loginPolicyVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
loginPolicyVO.setLastIndex(paginationInfo.getLastRecordIndex());
loginPolicyVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
List<LoginPolicyVO> loginPolicyGroupList = new ArrayList<LoginPolicyVO>();
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
if("".equals(loginPolicyVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
loginPolicyVO.setSearchSortCnd("ipGroupId");
loginPolicyVO.setSearchSortOrd("desc");
}
loginPolicyGroupList = egovLoginPolicyService.selectLoginGroupPolicyList(loginPolicyVO);
model.addAttribute("loginPolicyList", loginPolicyGroupList);
int totCnt = egovLoginPolicyService.selectLoginGroupPolicyListTotCnt(loginPolicyVO);
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
/*관리자 접속 IP 정보 조회*/
LoginPolicyVO tempLoginPolicyVO = new LoginPolicyVO();
List<LoginPolicyVO> adminLoginIpList = egovLoginPolicyService.selectAdminLoginIpList(tempLoginPolicyVO) ;
model.addAttribute("adminLoginIpList", adminLoginIpList);
return "/uat/uap/EgovLoginGroupPolicyList";
}
/**
* 로그인정책 정보 등록화면으로 이동한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/addLoginGroupPolicyView.do")
public String addLoginGroupPolicyView(@ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, HttpSession session , ModelMap model) throws Exception {
return "/uat/uap/EgovLoginGroupPolicyRegist";
}
/**
* 로그인정책 정보를 신규로 등록한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/addLoginGroupPolicy.do")
public String insertLoginGroupPolicy(@ModelAttribute("loginPolicy") LoginPolicyVO loginPolicyVO, BindingResult bindingResult, RedirectAttributes redirectAttributes, ModelMap model) throws Exception {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
String ipGroupId = idgenServicePolice.getNextStringId();
loginPolicyVO.setIpGroupId(ipGroupId);
loginPolicyVO.setFrstRegisterId(user.getId());
if(null != user && !"super".equals(user.getSiteId())){
loginPolicyVO.setSiteId(user.getSiteId());
}
egovLoginPolicyService.insertLoginGroupPolicy(loginPolicyVO);
model.addAttribute("message", egovMessageSource.getMessage("success.common.update"));
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.insert"));
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uap/selectLoginGroupPolicyList.do");
return redirectUrlMaker.getRedirectUrl();
//return "forward:/uat/uap/getLoginPolicy.do";
}
/**
* 기 등록된 로그인정책 정보를 삭제한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/ipGroupPolicyListDelete.do")
public String deleteIpGroupPolicyList(@RequestParam("del") String[] del ,RedirectAttributes redirectAttributes, ModelMap model) throws Exception {
for(String id:del) {
egovLoginPolicyService.deleteGroupPolicy(id);
}
redirectAttributes.addFlashAttribute("message", egovMessageSource.getMessage("success.common.delete"));
RedirectUrlMaker redirectUrlMaker = new RedirectUrlMaker("/uat/uap/selectLoginGroupPolicyList.do");
return redirectUrlMaker.getRedirectUrl();
}
/**
* 로그인정책 목록의 상세정보를 조회한다.
* @param loginPolicyVO - 로그인정책 VO
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/getLoginGroupPolicy.do")
public String getLoginGroupPolicy(@RequestParam("ipGroupId") String ipGroupId, @ModelAttribute("loginPolicyVO") LoginPolicyVO loginPolicyVO, ModelMap model) throws Exception {
loginPolicyVO.setIpGroupId(ipGroupId);
loginPolicyVO = egovLoginPolicyService.selectLoginGroupPolicy(loginPolicyVO) ;
model.addAttribute("loginPolicyVO", loginPolicyVO);
return "/uat/uap/EgovLoginGroupPolicyRegist";
}
/**
* 기 등록된 로그인정책 정보를 수정한다.
* @param loginPolicy - 로그인정책 model
* @return String - 리턴 Url
*/
@RequestMapping("/uat/uap/loginGroupPolicyUpdate.do")
public String updateLoginGroupPolicy(@ModelAttribute("loginPolicy") LoginPolicyVO loginPolicyVO, BindingResult bindingResult, ModelMap model) throws Exception {
beanValidator.validate(loginPolicyVO, bindingResult); //validation 수행
if (bindingResult.hasErrors()) {
model.addAttribute("loginPolicyVO", loginPolicyVO);
return "/uat/uap/EgovLoginPolicyUpdt";
} else {
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginPolicyVO.setIpGroupId(loginPolicyVO.getIpGroupId());
if(null != user && !"super".equals(user.getSiteId())){
loginPolicyVO.setSiteId(user.getSiteId());
}
loginPolicyVO.setLastUpdusrId(user.getId());
egovLoginPolicyService.updateLoginGroupPolicy(loginPolicyVO);
model.addAttribute("message", egovMessageSource.getMessage("success.common.update"));
return "redirect:/uat/uap/selectLoginGroupPolicyList.do";
}
}
//리스트 엑셀 다운로드
@RequestMapping(value="/uat/uap/loginPolicyListExcelDownload.do")
public void loginPolicyListExcelDownload(LoginPolicyVO loginPolicyVO,
HttpServletRequest request,
HttpServletResponse response ,
ModelMap model) throws Exception {
loginPolicyVO.setRecordCountPerPage(100000);
loginPolicyVO.setFirstIndex(0);
LoginVO loginVO = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
if(null != loginVO && !"super".equals(loginVO.getSiteId())){
loginPolicyVO.setSiteId(loginVO.getSiteId());
}
// 메모리에 100개의 행을 유지합니다. 행의 수가 넘으면 디스크에 적습니다.
SXSSFWorkbook wb = new SXSSFWorkbook(100);
CellStyle style = wb.createCellStyle();
style.setBorderBottom(CellStyle.BORDER_THIN); //테두리 두껍게
style.setBorderLeft(CellStyle.BORDER_THIN);
style.setBorderRight(CellStyle.BORDER_THIN);
style.setBorderTop(CellStyle.BORDER_THIN);
Font font = wb.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD); //글씨 bold
Cell cell = null;
Row row = null;
String fileName ="관리자접근IP 리스트";
String sheetTitle = "";
try{
List<LoginPolicyVO> loginPolicyList = egovLoginPolicyService.selectLoginGroupPolicyList(loginPolicyVO);
{ //화면 리스트
sheetTitle = "관리자접근IP 리스트(화면)" ; //제목
Sheet sheet = wb.createSheet(sheetTitle);
row = sheet.createRow(0);
for(int i=0 ; i < loginPolicyExcelValue.length ; i++) {
cell = row.createCell(i);
cell.setCellStyle(style);
cell.setCellValue(loginPolicyExcelValue[i][1]);
}
for(int i=0; i < loginPolicyList.size(); i++){
row = sheet.createRow(i+1);
for(int j=0 ; j < loginPolicyExcelValue.length ; j++) {
cell = row.createCell(j);
cell.setCellStyle(style);
if(j==0) cell.setCellValue(i+1); //번호
if(j==1) cell.setCellValue( loginPolicyList.get(i).getSiteIdTxt()); //사이트명
if(j==2) cell.setCellValue( loginPolicyList.get(i).getIpDc()); //사용그룹
if(j==3) cell.setCellValue( loginPolicyList.get(i).getIpInfo()); //IP정보
if(j==4) cell.setCellValue( loginPolicyList.get(i).getFrstRegisterId()); //등록자
if(j==5) cell.setCellValue( loginPolicyList.get(i).getFrstRegistPnttm()); //등록일
if(j==6) cell.setCellValue( loginPolicyList.get(i).getLastUpdusrId()); //수정자
if(j==7) cell.setCellValue( loginPolicyList.get(i).getLastUpdtPnttm()); //수정일
}
}
}
{ //DB리스트
sheetTitle = "관리자접근IP 리스트(DB)" ; //제목
Sheet sheet = wb.createSheet(sheetTitle);
row = sheet.createRow(0);
/*for(int i=0 ; i < userExcelValue.length ; i++) {*/
for(int i=0 ; i < loginPolicyExcelValue.length-4 ; i++){ //아이디 없어 -1
cell = row.createCell(i);
cell.setCellStyle(style);
if(i==0) {
cell.setCellValue("관리자 접근 아이디");
}else{
if(!"".equals(loginPolicyExcelValue[i][3])){
cell.setCellValue(loginPolicyExcelValue[i][1]+"\n"+loginPolicyExcelValue[i][3]);
}else {
cell.setCellValue(loginPolicyExcelValue[i][1]);
}
}
}
for(int i=0; i < loginPolicyList.size(); i++){
row = sheet.createRow(i+1);
for(int j=0 ; j < loginPolicyExcelValue.length-4 ; j++) {//아이디 없어 -1
cell = row.createCell(j);
cell.setCellStyle(style);
if(j==0) cell.setCellValue( loginPolicyList.get(i).getIpGroupId()); //아이디
if(j==1) cell.setCellValue( loginPolicyList.get(i).getSiteId()); //사이트명
if(j==2) cell.setCellValue( loginPolicyList.get(i).getIpDc()); //사용그룹
if(j==3) cell.setCellValue( loginPolicyList.get(i).getIpInfo()); //IP정보
}
}
}
response.setHeader("Set-Cookie", "fileDownload=true; path=/");
SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat ( "yyyy_MM_dd_HH_mm_ss", Locale.KOREA );
Date currentTime = new Date ();
String mTime = mSimpleDateFormat.format ( currentTime );
fileName = fileName+"("+mTime+")";
response.setHeader("Content-Disposition", String.format("attachment; filename=\""+new String((fileName).getBytes("KSC5601"),"8859_1")+".xlsx"));
wb.write(response.getOutputStream());
}catch(Exception e) {
response.setHeader("Set-Cookie", "fileDownload=false; path=/");
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Content-Type","text/html; charset=utf-8");
OutputStream out = null;
try {
out = response.getOutputStream();
byte[] data = new String("fail..").getBytes();
out.write(data, 0, data.length);
} catch(Exception ignore) {
ignore.printStackTrace();
} finally {
if(out != null) try { out.close(); } catch(Exception ignore) {}
}
}finally {
// 디스크 적었던 임시파일을 제거합니다.
wb.dispose();
try { wb.close(); } catch(Exception ignore) {}
}
}
}