Compare commits

...

8 Commits

Author SHA1 Message Date
kkw29 23530d77c6 JWT 작업중 1 year ago
kkw29 94d9f7e90b JWT 작업중 1 year ago
kkw29 d878f94a13 JWT 저장소 Local Storage -> Cookie 전환 2 years ago
김수봉 1bb45ee9b2 토큰 방식 개발 중... 2 years ago
김수봉 e5a881e15f Merge branch 'lhjdev' into dev_token
# Conflicts:
#	main_vm/.gradle/7.5.1/executionHistory/executionHistory.bin
#	main_vm/.gradle/7.5.1/executionHistory/executionHistory.lock
#	main_vm/.gradle/7.5.1/fileHashes/fileHashes.bin
#	main_vm/.gradle/7.5.1/fileHashes/fileHashes.lock
#	main_vm/.gradle/7.5.1/fileHashes/resourceHashesCache.bin
#	main_vm/.gradle/buildOutputCleanup/buildOutputCleanup.lock
#	main_vm/.gradle/buildOutputCleanup/outputFiles.bin
#	main_vm/.gradle/file-system.probe
#	main_vm/.idea/gradle.xml
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/common/system/controller/SystemCustController.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/common/system/service/SystemCustService.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/common/system/service/SystemServiceGroupService.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/common/system/vo/SystemCustSaveSubReq.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/rcp/conversation/nlp/wisenut/util/RestTemplateUtil.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/rcp/intentAnalysis/service/IntentAnalysisService.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/rcp/intentAnalysis/service/impl/IntentAnalysisServiceImpl.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/biz/rcp/monitoring/controller/MonitoringIntentAnalysisController.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/common/code/enumresource/MenuResource.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/common/code/enumresource/PolicyResource.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/db/jpa/entity/system/TbCustPolicy.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/db/jpa/entity/system/TbServiceGrouop.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/db/jpa/entity/system/TbServiceGroupPolicy.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/db/mybatis/alias/MonitoringIntentAnalysisVO.class
#	main_vm/build/classes/java/main/com/icomsys/main_vm/db/mybatis/mapper/IntentAnalysisMapper.class
#	main_vm/build/resources/main/application-local.yml
#	main_vm/build/resources/main/mapper/test/IntentAnalysis_SQL.xml
#	main_vm/build/resources/main/mapper/test/MonitoringOutscenario_SQL.xml
#	main_vm/build/tmp/compileJava/previous-compilation-data.bin
2 years ago
jangwonseokicom 43ad473107 db정보 업데이트 2 years ago
jangwonseokicom 4c3a5bdfda 권한수정 2 years ago
jangwonseokicom 029911940b 메뉴추가 2 years ago

@ -119,6 +119,14 @@ dependencies {
implementation files("lib/ASRLIB-2.4.0.2.jar") implementation files("lib/ASRLIB-2.4.0.2.jar")
implementation files("lib/pttsnet_class.jar") implementation files("lib/pttsnet_class.jar")
// jwt
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'
//
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
} }
tasks.named('test') { tasks.named('test') {

@ -0,0 +1,20 @@
package com.icomsys.main_vm.biz.addr.AddrAddrRealtimeList.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/addr/addrbot/addrRealtimeList")
public class AddrAddrRealtimeListController {
@GetMapping("/manage.do")
public String AddrAddrRealtimeList() {
return "/adm/addr/AddrAddrRealtimeList/AddrAddrRealtimeList";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.addr.AddrManageAddrProcess.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/addr/addrbot/manageAddrProcess")
public class AddrManageAddrProcessController {
@GetMapping("/manage.do")
public String AddrManageAddrProcess() {
return "/adm/addr/AddrManageAddrProcess/AddrManageAddrProcess";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.addr.AddrManageBuildType.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/addr/addrbot/manageBuildType")
public class AddrManageBuildTypeController {
@GetMapping("/manage.do")
public String AddrManageBuildType() {
return "/adm/addr/AddrManageBuildType/AddrManageBuildType";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.addr.AddrManageJusoUpload.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/addr/addrbot/manageJusoUpload")
public class AddrManageJusoUploadController {
@GetMapping("/manage.do")
public String AddrManageJusoUpload() {
return "/adm/addr/AddrManageJusoUpload/AddrManageJusoUpload";
}
}

@ -0,0 +1,20 @@
package com.icomsys.main_vm.biz.addr.AddrbotManageAddrSection.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/addr/addrbot/manageAddrSection")
public class AddrbotManageAddrSectionController {
@GetMapping("/manage.do")
public String AddrbotManageAddrSection() {
return "/adm/addr/AddrbotManageAddrSection/AddrbotManageAddrSection";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.addr.AddrbotManageBuildName.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/addr/addrbot/manageBuildName")
public class AddrbotManageBuildNameController {
@GetMapping("/manage.do")
public String AddrbotManageBuildName() {
return "/adm/addr/AddrbotManageBuildName/AddrbotManageBuildName";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.addr.AddrbotManageSynonym.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/addr/addrbot/manageSynonym")
public class AddrbotManageSynonymController {
@GetMapping("/manage.do")
public String AddrbotManageSynonym() {
return "/adm/addr/AddrbotManageSynonym/AddrbotManageSynonym";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.botcom.ManageGreetMent.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/botcom/manage/manageGreetMent")
public class ManageGreetMentController {
@GetMapping("/manage.do")
public String ManageGreetMent() {
return "/adm/botcom/ManageGreetMent/ManageGreetMent";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.botcom.ManageHoliday.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/botcom/manage/manageHoliday")
public class ManageHolidayController {
@GetMapping("/manage.do")
public String ManageHoliday() {
return "/adm/botcom/ManageHoliday/ManageHoliday";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.botcom.ManageNatural.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/botcom/manage/manageNatural")
public class ManageNaturalController {
@GetMapping("/manage.do")
public String ManageNatural() {
return "/adm/botcom/ManageNatural/ManageNatural";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.botcom.ManagerMent;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/botcom/manageMent")
public class ManagerMentController {
@GetMapping("/manage.do")
public String ManagerMent() {
return "/adm/botcom/ManagerMent/ManagerMent";
}
}

@ -0,0 +1,20 @@
package com.icomsys.main_vm.biz.botmoni.AddrRealtimeListExpansion.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/botmoni/addrRealtimeListExpansion")
public class AddrRealtimeListExpansionController {
@GetMapping("/manage.do")
public String AddrRealtimeListExpansion() {
return "/adm/botmoni/AddrRealtimeListExpansion/AddrRealtimeListExpansion";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.botmoni.GuideRealtimeListExpansion.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/botmoni/guideRealtimeListExpansion")
public class GuideRealtimeListExpansionController {
@GetMapping("/manage.do")
public String GuideRealtimeListExpansion() {
return "/adm/botmoni/GuideRealtimeListExpansion/GuideRealtimeListExpansion";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.botmoni.ReceiptRealtimeListExpansion.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/botmoni/receiptRealtimeListExpansion")
public class ReceiptRealtimeListExpansionController {
@GetMapping("/manage.do")
public String ReceiptRealtimeListExpansion() {
return "/adm/botmoni/ReceiptRealtimeListExpansion/ReceiptRealtimeListExpansion";
}
}

@ -0,0 +1,15 @@
package com.icomsys.main_vm.biz.common.login;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@Builder
@Data
@AllArgsConstructor
public class CinnamonToken {
private String grantType;
private String accessToken;
private String refreshToken;
}

@ -0,0 +1,153 @@
package com.icomsys.main_vm.biz.common.login;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.icomsys.main_vm.db.jpa.entity.system.TbBotUser;
import com.icomsys.main_vm.db.jpa.repo.system.TbUserAuthGroupRepo;
import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletResponse;
import java.security.Key;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.stream.Collectors;
@Slf4j
@Component
public class TokenProvider {
private final TbUserAuthGroupRepo tbUserAuthGroupRepo;
private static final long ACCESS_TOKEN_EXPIRE_TIME = 5 * 60 * 1000L;
private static final long REFRESH_TOKEN_EXPIRE_TIME = 1 * 60 * 60 * 1000L;
private final Key key;
public TokenProvider(@Value("${spring.jwt.secret}") String secretKey, TbUserAuthGroupRepo tbUserAuthGroupRepo) {
this.tbUserAuthGroupRepo = tbUserAuthGroupRepo;
byte[] keyBytes = Decoders.BASE64.decode(secretKey);
this.key = Keys.hmacShaKeyFor(keyBytes);
}
public CinnamonToken generateToken(Authentication authentication, TbBotUser user) throws JsonProcessingException {
// 권한 가져오기
String authorities = authentication.getAuthorities().stream()
.map(GrantedAuthority::getAuthority)
.collect(Collectors.joining(","));
long now = (new Date()).getTime();
// Access Token 생성
// Todo: Access Token 필요정보 추가 개발 필요
Date accessTokenExpiresIn = new Date(now + ACCESS_TOKEN_EXPIRE_TIME); // Todo: Access Token 만료 기간 설정 파일 추가
Claims claims = Jwts.claims()
.setSubject(authentication.getName())
.setExpiration(accessTokenExpiresIn);
claims.put("auth", authorities);
ObjectMapper mapper = new ObjectMapper();
// claims.put("UserVO", mapper.registerModule(new JavaTimeModule()).writeValueAsString(user.toUserVO()));
try {
JavaTimeModule javaTimeModule = new JavaTimeModule();
LocalDateTimeSerializer localDateTimeSerializer = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
javaTimeModule.addSerializer(LocalDateTime.class, localDateTimeSerializer);
// claims.put("UserVO", mapper.registerModule(javaTimeModule).readValue(user.toUserVO(), UserVo.class));
claims.put("UserVO", mapper.registerModule(javaTimeModule).writeValueAsString(user.toUserVO()));
// claims.put("PolicyList", tbUserAuthGroupRepo.userPolicyListSelect(user.getUserSeq(), user.getLastUseServiceGroup()));
}
catch (Exception e) {
e.printStackTrace();
}
String accessToken = Jwts.builder()
.setSubject(authentication.getName())
.setClaims(claims)
.setExpiration(accessTokenExpiresIn)
.signWith(key, SignatureAlgorithm.HS256)
.compact();
// Refresh Token 생성
String refreshToken = Jwts.builder()
.setExpiration(new Date(now + REFRESH_TOKEN_EXPIRE_TIME)) // Todo: Refresh Token 만료 기간 설정 파일에 추가
.signWith(key, SignatureAlgorithm.HS256)
.compact();
CinnamonToken token = CinnamonToken.builder()
.grantType("Bearer")
.accessToken(accessToken)
.refreshToken(refreshToken)
.build();
return token;
}
// JWT 토큰을 복호화하여 토큰에 들어있는 정보를 꺼내는 메서드
public Authentication getAuthentication(String accessToken) {
// 토큰 복호화
Claims claims = parseClaims(accessToken);
// Todo: 권한 관련 정보 처리
if (claims.get("auth") == null) {
throw new RuntimeException("권한 정보가 없는 토큰입니다.");
}
// Todo: 사용자 정보와 권한 관련 정보를 읽어와 리턴
// 클레임에서 권한 정보 가져오기
Collection<? extends GrantedAuthority> authorities =
Arrays.stream(claims.get("auth").toString().split(","))
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toList());
// UserDetails 객체를 만들어서 Authentication 리턴
// UserDetails principal = new User(claims.getSubject(), "", authorities);
return new UsernamePasswordAuthenticationToken(/*principal*/ "", "", authorities);
}
// 토큰 정보를 검증하는 메서드
public boolean validateToken(String token) {
// Todo: 내부 토큰 사용 정책에 따라 추후 수정 필요!!
try {
Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token);
return true;
} catch (io.jsonwebtoken.security.SecurityException | MalformedJwtException e) {
log.info("Invalid JWT Token", e);
} catch (ExpiredJwtException e) {
log.info("Expired JWT Token", e);
} catch (UnsupportedJwtException e) {
log.info("Unsupported JWT Token", e);
} catch (IllegalArgumentException e) {
log.info("JWT claims string is empty.", e);
}
return false;
}
public Claims parseClaims(String accessToken) {
try {
return Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(accessToken).getBody();
} catch (ExpiredJwtException e) {
return e.getClaims();
}
}
}

@ -5,6 +5,7 @@ import com.icomsys.main_vm.biz.advice.excep.CustomBadRequestException;
import com.icomsys.main_vm.biz.advice.excep.CustomNoSuchFieldException; import com.icomsys.main_vm.biz.advice.excep.CustomNoSuchFieldException;
import com.icomsys.main_vm.biz.advice.excep.CustomNotFoundException; import com.icomsys.main_vm.biz.advice.excep.CustomNotFoundException;
import com.icomsys.main_vm.biz.common.common.service.FileService; import com.icomsys.main_vm.biz.common.common.service.FileService;
import com.icomsys.main_vm.biz.common.login.CinnamonToken;
import com.icomsys.main_vm.biz.common.login.req.LoginReq; import com.icomsys.main_vm.biz.common.login.req.LoginReq;
import com.icomsys.main_vm.biz.common.login.req.MainOprReq; import com.icomsys.main_vm.biz.common.login.req.MainOprReq;
import com.icomsys.main_vm.biz.common.login.req.PwdUpdateReq; import com.icomsys.main_vm.biz.common.login.req.PwdUpdateReq;
@ -25,6 +26,7 @@ import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
@ -37,6 +39,9 @@ public class LoginController {
* *
*/ */
private final LoginService loginService; private final LoginService loginService;
private final HttpServletResponse httpServletResponse;
private final FileService fileService; private final FileService fileService;
private final HttpServletRequest httpServletRequest; private final HttpServletRequest httpServletRequest;
@ -68,6 +73,20 @@ public class LoginController {
return loginService.LoginValidService(loginReq, model); return loginService.LoginValidService(loginReq, model);
} }
@PostMapping("/adm/tokenLogin")
@ResponseBody
public String tokenLogin(@RequestBody LoginCheckReq dto, HttpServletResponse httpServletResponse) {
String id = dto.getUserId();
String pwd = dto.getPassword();
CinnamonToken cinnamonToken = loginService.tokenLogin(dto);
httpServletResponse.setHeader("Authorization", cinnamonToken.getRefreshToken());
return cinnamonToken.getAccessToken();
}
@RequestMapping(value = "/adm/main/actionMain.do") @RequestMapping(value = "/adm/main/actionMain.do")
public String actionMain(ModelMap model) { public String actionMain(ModelMap model) {
return loginService.actionMain(model); return loginService.actionMain(model);
@ -148,10 +167,10 @@ public class LoginController {
public ResponseEntity getMainOprmngCode() throws CustomNoSuchFieldException, NoSuchFieldException { public ResponseEntity getMainOprmngCode() throws CustomNoSuchFieldException, NoSuchFieldException {
//List<OprmngCodeRes> //List<OprmngCodeRes>
if (httpServletRequest.getSession() == null) { // if (httpServletRequest.getSession() == null) {
log.info("SESSION NULL"); // log.info("SESSION NULL");
return ResponseEntity.badRequest().build(); // return ResponseEntity.badRequest().build();
} // }
if (loginService.getUserVo() == null) { if (loginService.getUserVo() == null) {
log.info("getMainOprmngCode NULL"); log.info("getMainOprmngCode NULL");
return ResponseEntity.badRequest().build(); return ResponseEntity.badRequest().build();

@ -45,8 +45,7 @@ public class CustomUserDetailsService implements UserDetailsService {
List<SimpleGrantedAuthority> permission = authList.stream() List<SimpleGrantedAuthority> permission = authList.stream()
.map(SimpleGrantedAuthority::new) .map(SimpleGrantedAuthority::new)
.collect(Collectors.toList()); .collect(Collectors.toList());
return new User(String.valueOf(dto.getUserId()), dto.getPassword(), permission) return new User(String.valueOf(dto.getUserId()), dto.getPassword(), permission);
;
} }

@ -1,10 +1,17 @@
package com.icomsys.main_vm.biz.common.login.service; package com.icomsys.main_vm.biz.common.login.service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.icomsys.main_vm.biz.advice.excep.CustomBadRequestException; import com.icomsys.main_vm.biz.advice.excep.CustomBadRequestException;
import com.icomsys.main_vm.biz.advice.excep.CustomNotFoundException; import com.icomsys.main_vm.biz.advice.excep.CustomNotFoundException;
import com.icomsys.main_vm.biz.common.common.service.LogService; import com.icomsys.main_vm.biz.common.common.service.LogService;
import com.icomsys.main_vm.biz.common.common.service.LogVO; import com.icomsys.main_vm.biz.common.common.service.LogVO;
import com.icomsys.main_vm.biz.common.login.CinnamonToken;
import com.icomsys.main_vm.biz.common.login.TokenProvider;
import com.icomsys.main_vm.biz.common.login.req.LoginReq; import com.icomsys.main_vm.biz.common.login.req.LoginReq;
import com.icomsys.main_vm.biz.common.login.req.MainOprReq; import com.icomsys.main_vm.biz.common.login.req.MainOprReq;
import com.icomsys.main_vm.biz.common.login.req.PwdUpdateReq; import com.icomsys.main_vm.biz.common.login.req.PwdUpdateReq;
@ -20,8 +27,11 @@ import com.icomsys.main_vm.db.jpa.entity.conversation.TbIcsLog;
import com.icomsys.main_vm.db.jpa.entity.system.TbBotUser; import com.icomsys.main_vm.db.jpa.entity.system.TbBotUser;
import com.icomsys.main_vm.db.jpa.repo.system.*; import com.icomsys.main_vm.db.jpa.repo.system.*;
import com.icomsys.main_vm.db.mybatis.alias.LoginVO; import com.icomsys.main_vm.db.mybatis.alias.LoginVO;
import io.jsonwebtoken.Claims;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.json.BasicJsonParser;
import org.springframework.boot.json.JsonParser;
import org.springframework.context.MessageSource; import org.springframework.context.MessageSource;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing; import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@ -29,6 +39,7 @@ import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.core.userdetails.UsernameNotFoundException;
@ -36,11 +47,18 @@ import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.util.StringUtils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Reader;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -54,6 +72,8 @@ import java.util.stream.Collectors;
*/ */
public class LoginService { public class LoginService {
private final TokenProvider tokenProvider;
private final AuthenticationManagerBuilder authenticationManagerBuilder; private final AuthenticationManagerBuilder authenticationManagerBuilder;
private final AuthenticationManager authenticationManager; private final AuthenticationManager authenticationManager;
private final PasswordEncoder passwordEncoder; private final PasswordEncoder passwordEncoder;
@ -93,7 +113,7 @@ public class LoginService {
SecurityContext securityContext = SecurityContextHolder.getContext(); SecurityContext securityContext = SecurityContextHolder.getContext();
securityContext.setAuthentication(authentication); securityContext.setAuthentication(authentication);
sessionSetting(user); // sessionSetting(user);
LoginVO userResult = user.toLoginVO(); LoginVO userResult = user.toLoginVO();
return "forward:/adm/main/actionMain.do"; return "forward:/adm/main/actionMain.do";
@ -110,9 +130,65 @@ public class LoginService {
session.setAttribute(SessionResource.UserVO.getName(), tbu.toUserVO()); session.setAttribute(SessionResource.UserVO.getName(), tbu.toUserVO());
session.setMaxInactiveInterval(60 * 60); session.setMaxInactiveInterval(60 * 60);
// session.setMaxInactiveInterval(30); // session.setMaxInactiveInterval(30);
} }
// private void jwtSetting(LoginReq dto, TbBotUser user) {
// // 1. Login ID/PW 를 기반으로 Authentication 객체 생성
// // 이때 authentication 는 인증 여부를 확인하는 authenticated 값이 false
// UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(dto.getUserId(), dto.getPassword());
//
// // 2. 실제 검증 (사용자 비밀번호 체크)이 이루어지는 부분
// // authenticate 매서드가 실행될 때 CustomUserDetailsService 에서 만든 loadUserByUsername 메서드가 실행
// try {
// Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
//
// // 3. 인증 정보를 기반으로 JWT 토큰 생성
// CinnamonToken tokenInfo = tokenProvider.generateToken(authentication, user);
//
// // create a cookie
// Cookie cookie = new Cookie("accessToken", tokenInfo.getAccessToken());
//
// // expires in 7 days
// cookie.setMaxAge(7 * 24 * 60 * 60);
//
// // optional properties
// cookie.setSecure(true);
// cookie.setHttpOnly(true);
// cookie.setPath("/");
//
// // add cookie to response
// httpServletResponse.addCookie(cookie);
// } catch ( AuthenticationException e) {
// log.info(e.getMessage());
// throw e;
// }
// }
@Transactional
public CinnamonToken tokenLogin(LoginCheckReq dto){
// 1. Login ID/PW 를 기반으로 Authentication 객체 생성
// 이때 authentication 는 인증 여부를 확인하는 authenticated 값이 false
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(dto.getUserId(), dto.getPassword());
TbBotUser user = tbBotUserRepo.findByUserIdAndUseYn(dto.getUserId(), "Y")
.orElseThrow(() -> new UsernameNotFoundException("로그인 실패"));
// 2. 실제 검증 (사용자 비밀번호 체크)이 이루어지는 부분
// authenticate 매서드가 실행될 때 CustomUserDetailsService 에서 만든 loadUserByUsername 메서드가 실행
try {
Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken);
// 3. 인증 정보를 기반으로 JWT 토큰 생성
CinnamonToken cinnamonToken = tokenProvider.generateToken(authentication, user);
return cinnamonToken;
} catch ( AuthenticationException e) {
log.info(e.getMessage());
throw e;
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
}
public String actionMain(ModelMap model) { public String actionMain(ModelMap model) {
@ -122,7 +198,9 @@ public class LoginService {
List<MenuVo> menuVos = new ArrayList<>(); List<MenuVo> menuVos = new ArrayList<>();
String url = ""; String url = "";
// LoginVO loginVO = (LoginVO) httpServletRequest.getSession().getAttribute(SessionResource.LoginVO.getName()); // LoginVO loginVO = (LoginVO) httpServletRequest.getSession().getAttribute(SessionResource.LoginVO.getName());
UserVo userVo = (UserVo) httpServletRequest.getSession().getAttribute(SessionResource.UserVO.getName()); // UserVo userVo = (UserVo) httpServletRequest.getSession().getAttribute(SessionResource.UserVO.getName());
UserVo userVo = getUserVo();
log.info("action main session uservo- {}", new Gson().toJson(userVo)); log.info("action main session uservo- {}", new Gson().toJson(userVo));
// if (loginVO != null && loginVO.getUserId() != null && !loginVO.getUserId().equals("")) { // if (loginVO != null && loginVO.getUserId() != null && !loginVO.getUserId().equals("")) {
if (userVo != null && userVo.getUserId() != null && !userVo.getUserId().equals("")) { if (userVo != null && userVo.getUserId() != null && !userVo.getUserId().equals("")) {
@ -157,7 +235,47 @@ public class LoginService {
} }
public UserVo getUserVo() { public UserVo getUserVo() {
UserVo user = (UserVo) httpServletRequest.getSession().getAttribute(SessionResource.UserVO.getName()); String payloadJWT = "";
String accessToken = "";
// String bearerToken = httpServletRequest.getHeader("Authorization");
//
// if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer")) {
// payload = bearerToken.substring(7);
// }
Cookie[] cookies = httpServletRequest.getCookies();
if(cookies!=null){
for (Cookie c : cookies) {
String name = c.getName(); // 쿠키 이름 가져오기
String value = c.getValue(); // 쿠키 값 가져오기
if (name.equals("accessToken")) {
payloadJWT = value.split("[.]")[1];
accessToken = value;
}
}
}
Claims claims = tokenProvider.parseClaims(accessToken);
// Base64.Decoder decoder = Base64.getUrlDecoder();
// final String payload = new String(decoder.decode(payloadJWT));
// JsonParser jsonParser = new BasicJsonParser();
// Map<String, Object> jsonArray = jsonParser.parseMap(payload);
Gson gson =new Gson();
Map map =new HashMap();
// map = gson.fromJson((String) jsonArray.get("UserVO"), map.getClass());
map = gson.fromJson((String) claims.get("UserVO"), map.getClass());
map.put("registDate", map.get("registDate").toString().replace(" ", "T"));
map.put("updateDate", map.get("updateDate").toString().replace(" ", "T"));
ObjectMapper objectMapper = new ObjectMapper();
UserVo user = objectMapper.registerModule(new JavaTimeModule()).convertValue(map, UserVo.class);
// UserVo user = (UserVo) httpServletRequest.getSession().getAttribute(SessionResource.UserVO.getName());
// if (user == null || user.equals("")) { // if (user == null || user.equals("")) {
// httpServletResponse.setStatus(401); // httpServletResponse.setStatus(401);
// } // }
@ -166,6 +284,24 @@ public class LoginService {
public List<String> getSessionPolicy() { public List<String> getSessionPolicy() {
return (ArrayList) httpServletRequest.getSession().getAttribute(SessionResource.PolicyList.getName()); return (ArrayList) httpServletRequest.getSession().getAttribute(SessionResource.PolicyList.getName());
// String accessToken = "";
//
// Cookie[] cookies = httpServletRequest.getCookies();
//
// if(cookies!=null){
// for (Cookie c : cookies) {
// String name = c.getName(); // 쿠키 이름 가져오기
// String value = c.getValue(); // 쿠키 값 가져오기
// if (name.equals("accessToken")) {
// accessToken = value;
// }
// }
// }
//
// Claims claims = tokenProvider.parseClaims(accessToken);
//
// return (ArrayList) claims.get("PolicyList");
} }
@Transactional @Transactional
@ -282,8 +418,7 @@ public class LoginService {
public void LastUserServiceGroupUpdate(Long userSeq, String updateService) throws CustomNotFoundException { public void LastUserServiceGroupUpdate(Long userSeq, String updateService) throws CustomNotFoundException {
tbBotUserRepo.findById(userSeq) tbBotUserRepo.findById(userSeq)
.orElseThrow(() -> new CustomNotFoundException()) .orElseThrow(() -> new CustomNotFoundException())
.updateLastService(updateService) .updateLastService(updateService);
;
} }
@Transactional @Transactional
@ -344,7 +479,6 @@ public class LoginService {
} }
public List<OprmngCodeRes> getOprmngCodeAdmin(String serviceType) { public List<OprmngCodeRes> getOprmngCodeAdmin(String serviceType) {
List<OprmngCodeRes> result = tbServiceGrouopRepo.getOprmngCodeAdmin(getUserVo(), serviceType); List<OprmngCodeRes> result = tbServiceGrouopRepo.getOprmngCodeAdmin(getUserVo(), serviceType);
log.info("result - {}", new Gson().toJson(result)); log.info("result - {}", new Gson().toJson(result));
return result; return result;
@ -387,7 +521,6 @@ public class LoginService {
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
} }
@Transactional @Transactional
public ResponseEntity PwdUpdate(PwdUpdateReq dto) throws CustomNotFoundException, CustomBadRequestException { public ResponseEntity PwdUpdate(PwdUpdateReq dto) throws CustomNotFoundException, CustomBadRequestException {
TbBotUser user = tbBotUserRepo.findByUserId(dto.getId()).orElseThrow(() -> new CustomNotFoundException()); TbBotUser user = tbBotUserRepo.findByUserId(dto.getId()).orElseThrow(() -> new CustomNotFoundException());

@ -140,6 +140,7 @@ public class SystemCustController {
@PostMapping("/cust/modify") @PostMapping("/cust/modify")
@ResponseBody @ResponseBody
public void CustModify(@RequestBody SystemCustSaveReq dto) throws CustomNotFoundException { public void CustModify(@RequestBody SystemCustSaveReq dto) throws CustomNotFoundException {
log.info(" useYn------------------ {}", new Gson().toJson(dto));
custService.CustModify(dto); custService.CustModify(dto);
} }

@ -93,7 +93,7 @@ public class SystemCustService {
tbIcsOprMngInfoRepo.saveAll(dto.toOpr(uv)); tbIcsOprMngInfoRepo.saveAll(dto.toOpr(uv));
tbCustPolicyRepo.saveAll(dto.toPolicy()); tbCustPolicyRepo.saveAll(dto.toPolicy());
tbUserCustRepo.saveAll(dto.toSystemAdmin(uv)); tbUserCustRepo.saveAll(dto.toSystemAdmin(uv));
tbProjectSettingRepo.saveAll(WisenutInsert(dto.toWisenutInsert())); // tbProjectSettingRepo.saveAll(WisenutInsert(dto.toWisenutInsert()));
} }
public List<TbProjectSetting> WisenutInsert(List<WisenutInsertReqVo> dto) throws CustomNotFoundException { public List<TbProjectSetting> WisenutInsert(List<WisenutInsertReqVo> dto) throws CustomNotFoundException {
@ -200,7 +200,7 @@ public class SystemCustService {
String serviceGroup = e.getAddServiceGroup(); String serviceGroup = e.getAddServiceGroup();
List<TbCustPolicy> beforPol = custPolBase.get(serviceGroup); List<TbCustPolicy> beforPol = custPolBase.get(serviceGroup);
List<String> insertVal = e.getAuthList(); List<String> insertVal = e.getAuthList();
log.info("modiiiiiiii - {}", new Gson().toJson(e));
//수정할 데이터 //수정할 데이터
if (custPolBase.keySet().stream().collect(Collectors.toList()).contains(e.getAddServiceGroup())) { if (custPolBase.keySet().stream().collect(Collectors.toList()).contains(e.getAddServiceGroup())) {
TbServiceGrouop tsg = tbServiceGrouopRepo.findByServiceGroup(serviceGroup) TbServiceGrouop tsg = tbServiceGrouopRepo.findByServiceGroup(serviceGroup)
@ -237,7 +237,9 @@ public class SystemCustService {
.policyVal(h) .policyVal(h)
.build()); .build());
} }
log.info(".getAddUseYn() --- " + e.getAddUseYn());
saveService.add(e.toService(custResult.getCustCode(), uv)); saveService.add(e.toService(custResult.getCustCode(), uv));
// saveService.add(e.toService(custResult.getCustCode(), uv));
saveOpr.add(e.toOprmngCode(custResult.getCustCode(), uv)); saveOpr.add(e.toOprmngCode(custResult.getCustCode(), uv));
} }
} }
@ -246,9 +248,9 @@ public class SystemCustService {
tbCustPolicyRepo.deleteByServiceGroupInAndPolicyValIn(e, delUpperVal.get(e)); tbCustPolicyRepo.deleteByServiceGroupInAndPolicyValIn(e, delUpperVal.get(e));
tbServiceGroupPolicyRepo.deleteByServiceGroupInAndPolicyValIn(e, delUpperVal.get(e)); tbServiceGroupPolicyRepo.deleteByServiceGroupInAndPolicyValIn(e, delUpperVal.get(e));
} }
log.info(".saveService() --- {}" , new Gson().toJson(saveService));
tbCustPolicyRepo.saveAll(insertPol);
tbServiceGrouopRepo.saveAll(saveService); tbServiceGrouopRepo.saveAll(saveService);
tbCustPolicyRepo.saveAll(insertPol);
tbIcsOprMngInfoRepo.saveAll(saveOpr); tbIcsOprMngInfoRepo.saveAll(saveOpr);
//프로젝트세팅 테이블이 저장되어야 해야된다해서 나중에 추가된 코드 //프로젝트세팅 테이블이 저장되어야 해야된다해서 나중에 추가된 코드
//1차에선 데이터를 DB에서 SQL로 인서트했다고함. //1차에선 데이터를 DB에서 SQL로 인서트했다고함.
@ -260,7 +262,7 @@ public class SystemCustService {
.serviceGroupDesc(e.getServiceGroupDesc()) .serviceGroupDesc(e.getServiceGroupDesc())
.build()); .build());
} }
tbProjectSettingRepo.saveAll(WisenutInsert(saveProject)); // tbProjectSettingRepo.saveAll(WisenutInsert(saveProject));
} }
} }

@ -186,7 +186,7 @@ public class SystemServiceGroupService {
.oprMngCode(dto.getCustCode()+"_RCP_"+dto.getSubServiceGroup()) .oprMngCode(dto.getCustCode()+"_RCP_"+dto.getSubServiceGroup())
.serviceGroupDesc(dto.getSubServiceGroupDesc()) .serviceGroupDesc(dto.getSubServiceGroupDesc())
.build()); .build());
tbProjectSettingRepo.saveAll(systemCustService.WisenutInsert(proSet)); // tbProjectSettingRepo.saveAll(systemCustService.WisenutInsert(proSet));
} }

@ -34,7 +34,24 @@ public class SystemCustSaveSubReq {
this.authList = authList; this.authList = authList;
} }
public TbServiceGrouop toService(String custCode, UserVo uv, String yn) {
System.out.println("use - " + this.addUseYn);
return TbServiceGrouop.builder()
.serviceGroup(this.addServiceGroup.toUpperCase())
.serviceGroupUpper(this.addServiceGroup)
.custCode(custCode)
.serviceType("M")
.serviceGroupName(this.addServiceGroupName)
.serviceGroupDesc(this.addServiceGroupDesc)
.useYn(yn)
.registId(uv.getUserId())
.registDate(LocalDateTime.now())
.updateId(uv.getUserId())
.updateDate(LocalDateTime.now())
.build();
}
public TbServiceGrouop toService(String custCode, UserVo uv) { public TbServiceGrouop toService(String custCode, UserVo uv) {
System.out.println("use - " + this.addUseYn);
return TbServiceGrouop.builder() return TbServiceGrouop.builder()
.serviceGroup(this.addServiceGroup.toUpperCase()) .serviceGroup(this.addServiceGroup.toUpperCase())
.serviceGroupUpper(this.addServiceGroup) .serviceGroupUpper(this.addServiceGroup)
@ -42,7 +59,7 @@ public class SystemCustSaveSubReq {
.serviceType("M") .serviceType("M")
.serviceGroupName(this.addServiceGroupName) .serviceGroupName(this.addServiceGroupName)
.serviceGroupDesc(this.addServiceGroupDesc) .serviceGroupDesc(this.addServiceGroupDesc)
.useYn(this.addUseYn) .useYn("Y")
.registId(uv.getUserId()) .registId(uv.getUserId())
.registDate(LocalDateTime.now()) .registDate(LocalDateTime.now())
.updateId(uv.getUserId()) .updateId(uv.getUserId())
@ -56,7 +73,7 @@ public class SystemCustSaveSubReq {
.serviceGroup(this.addServiceGroup) .serviceGroup(this.addServiceGroup)
.oprMngCode(custCode+"_RCP_"+this.addServiceGroup.toUpperCase()) .oprMngCode(custCode+"_RCP_"+this.addServiceGroup.toUpperCase())
.solVal("RCP") .solVal("RCP")
.useYn(this.addUseYn) .useYn("Y")
.registId(uv.getUserId()) .registId(uv.getUserId())
.registDate(LocalDateTime.now()) .registDate(LocalDateTime.now())
.updateId(uv.getUserId()) .updateId(uv.getUserId())

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.gud.adminMonitoring.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/adminMonitoring")
public class AdminMonitoringController {
@GetMapping("/manage.do")
public String AdminMonitoring() {
return "/adm/gud/adminMonitoring/adminMonitoring";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.ai.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/ai/nluEntityList")
public class AiNluEntityListController {
@GetMapping("/manage.do")
public String AiNluEntityList() {
return "/adm/gud/ai/AiNluEntityList";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.ai.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/ai/nluIntentList")
public class AiNluIntentListController {
@GetMapping("/manage.do")
public String AiNluIntentList() {
return "/adm/gud/ai/AiNluIntentList";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.ai.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/ai/nluIntenttest")
public class AiNluIntenttestController {
@GetMapping("/manage.do")
public String AiNluIntenttest() {
return "/adm/gud/ai/AiNluIntenttest";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.ai.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/ai/nluLog")
public class AiNluLogController {
@GetMapping("/manage.do")
public String AiNluLog() {
return "/adm/gud/ai/AiNluLog";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.ai.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/ai/nluRecommendedLearning")
public class AiNluRecommendedLearningController {
@GetMapping("/manage.do")
public String AiNluRecommendedLearning() {
return "/adm/gud/ai/AiNluRecommendedLearning";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.ai.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/ai/nluTraining")
public class AiNluTrainingController {
@GetMapping("/manage.do")
public String AiNluTraining() {
return "/adm/gud/ai/AiNluTraining";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.ai.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/ai/synonymList")
public class AiSynonymListController {
@GetMapping("/manage.do")
public String AiSynonymList() {
return "/adm/gud/ai/AiSynonymList";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.gud.consultationRealtime.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/consultationRealtime")
public class ConsultationRealtimeController {
@GetMapping("/manage.do")
public String ConsultationRealtime() {
return "/adm/gud/consultationRealtime/ConsultationRealtime";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.gud.contents.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/contents/contentsAssessment")
public class ContentsAssessmentController {
@GetMapping("/manage.do")
public String ContentsAssessment() {
return "/adm/gud/contents/ContentsAssessment";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.gud.contents.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/contents/contentsAssessmentHistory")
public class ContentsAssessmentHistoryController {
@GetMapping("/manage.do")
public String ContentsAssessmentHistory() {
return "/adm/gud/contents/ContentsAssessmentHistory";
}
}

@ -0,0 +1,20 @@
package com.icomsys.main_vm.biz.gud.contents.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/contents/list")
public class ContentsListController {
@GetMapping("/manage.do")
public String ContentsList() {
return "/adm/gud/contents/ContentsList";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.gud.contents.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/contents/manager")
public class ContentsManagerController {
@GetMapping("/manage.do")
public String ContentsManager() {
return "/adm/gud/contents/ContentsManager";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.gud.history.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/history/inbox")
public class HistoryInboxController {
@GetMapping("/manage.do")
public String inbox() {
return "/adm/gud/history/HistoryInbox";
}
}

@ -0,0 +1,23 @@
package com.icomsys.main_vm.biz.gud.history.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/history/outbox")
public class HistoryOutboxController {
@GetMapping("/manage.do")
public String Outbox() {
return "/adm/gud/history/HistoryOutbox";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.gud.history.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/gud/guide/history/scrch")
public class HistoryScrchController {
@GetMapping("/manage.do")
public String Scrch() {
return "/adm/gud/history/HistoryScrch";
}
}

@ -23,6 +23,7 @@ import org.springframework.ui.Model;
import org.springframework.util.FileCopyUtils; import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.*; import java.io.*;
@ -52,8 +53,20 @@ public class MonitoringConsultingController {
private final ExcelService excelService; private final ExcelService excelService;
private final LogService logService; private final LogService logService;
private final HttpServletRequest httpServletRequest;
@GetMapping("/consulting/manage.do") @GetMapping("/consulting/manage.do")
public String ConsultingView(Model model){ public String ConsultingView(Model model){
Cookie[] cookies = httpServletRequest.getCookies(); // 모든 쿠키 가져오기
if(cookies != null){
for (Cookie c : cookies) {
String name = c.getName(); // 쿠키 이름 가져오기
String value = c.getValue(); // 쿠키 값 가져오기
log.info("###Cookie_Name : " + name);
log.info("###Cookie_Value : " + value);
}
}
return "/adm/rcp/monitoring/consulting"; return "/adm/rcp/monitoring/consulting";
} }

@ -0,0 +1,20 @@
package com.icomsys.main_vm.biz.rcpv1.RcpReport.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/rcpv1/rcpReport")
public class RcpReportController {
@GetMapping("/manage.do")
public String RcpReport() {
return "/adm/rcpv1/RcpReport/RcpReport";
}
}

@ -0,0 +1,20 @@
package com.icomsys.main_vm.biz.rcpv1.RcpTimeReport.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/rcpv1/rcpTimeReport")
public class RcpTimeReportContoller {
@GetMapping("/manage.do")
public String RcpTimeReport() {
return "/adm/rcpv1/RcpTimeReport/RcpTimeReport";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.rcpv1.ReceiptList.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/rcpv1/receiptList")
public class ReceiptListController {
@GetMapping("/manage.do")
public String ReceiptList() {
return "/adm/rcpv1/ReceiptList/ReceiptList";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.rcpv1.ReceiptOutRealtimeList.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/rcpv1/receiptOutRealtimeList")
public class ReceiptOutRealtimeListController {
@GetMapping("/manage.do")
public String ReceiptOutRealtimeList() {
return "/adm/rcpv1/ReceiptOutRealtimeList/ReceiptOutRealtimeList";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.rcpv1.ReceiptRealtimeList.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/rcpv1/receiptRealtimeList")
public class ReceiptRealtimeListController {
@GetMapping("/manage.do")
public String ReceiptRealtimeList() {
return "/adm/rcpv1/ReceiptRealtimeList/ReceiptRealtimeList";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.vdo.IncomingCounselingHistory.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/vdo/incomingCounselingHistory")
public class IncomingCounselingHistoryController {
@GetMapping("/manage.do")
public String IncomingCounselingHistory() {
return "/adm/vdo/IncomingCounselingHistory/IncomingCounselingHistory";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.vdo.IncomingCounselingList.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/vdo/incomingCounselingList")
public class IncomingCounselingListController {
@GetMapping("/manage.do")
public String IncomingCounselingList() {
return "/adm/vdo/IncomingCounselingList/IncomingCounselingList";
}
}

@ -0,0 +1,21 @@
package com.icomsys.main_vm.biz.vdo.IncomingManageCategory.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/vdo/incomingManageCategory")
public class IncomingManageCategoryController {
@GetMapping("/manage.do")
public String IncomingManageCategory() {
return "/adm/vdo/IncomingManageCategory/IncomingManageCategory";
}
}

@ -0,0 +1,22 @@
package com.icomsys.main_vm.biz.vdo.IncomingMvReport.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@Slf4j
@RequiredArgsConstructor
@RequestMapping("/admin/vdo/incomingMvReport")
public class IncomingMvReportController {
@GetMapping("/manage.do")
public String IncomingMvReport(){
return "/adm/vdo/IncomingMvReport/IncomingMvReport";
}
}

@ -48,6 +48,67 @@ public enum MenuResource {
rcpoprmanagettstagmanage("rcp", 2200003L, 2200000L, 3, "TTS태그관리", "TTS태그관리", "/admin/rcp/oprmanage/ttstag/manage.do"), rcpoprmanagettstagmanage("rcp", 2200003L, 2200000L, 3, "TTS태그관리", "TTS태그관리", "/admin/rcp/oprmanage/ttstag/manage.do"),
gudguide("gud", 2300000L, 1L, 2, "상담가이드", "상담가이드", "0"),
gudguideconsultationRealtimemanage("gud", 2300100L, 2300000L, 3, "실시간상담", "실시간상담", "/admin/gud/guide/consultationRealtime/manage.do"),
gudguideadminMonitoringmanage("gud", 2300200L, 2300000L, 3, "관리자모니터링", "관리자모니터링", "/admin/gud/guide/adminMonitoring/manage.do"),
gudguidehistory("gud", 2300300L, 2300000L, 3, "상담이력관리", "상담이력관리", "0"),
gudguidehistoryscrchmanage("gud", 2300301L, 2300300L, 4, "상담이력조회", "상담이력조회", "/admin/gud/guide/history/scrch/manage.do"),
gudguidehistoryoutboxmanage("gud", 2300302L, 2300300L, 4, "상담이력전송함", "상담이력전송함", "/admin/gud/guide/history/outbox/manage.do"),
gudguidehistoryinboxmanage("gud", 2300303L, 2300300L, 4, "상담이력수신함", "상담이력수신함", "/admin/gud/guide/history/inbox/manage.do"),
gudguidecontents("gud", 2300400L, 2300000L, 3, "상담컨텐츠", "상담컨텐츠", "0"),
gudguidecontentslistmanage("gud", 2300401L, 2300400L, 4, "상담가이드조회", "상담가이드조회", "/admin/gud/guide/contents/list/manage.do"),
gudguidecontentsmanagermanage("gud", 2300402L, 2300400L, 4, "상담가이드관리", "상담가이드관리", "/admin/gud/guide/contents/manager/manage.do"),
gudguidecontentscontentsAssessmentmanage("gud", 2300403L, 2300400L, 4, "상담가이드평가", "상담가이드평가", "/admin/gud/guide/contents/contentsAssessment/manage.do"),
gudguidecontentscontentsAssessmentHistorymanage("gud", 2300404L, 2300400L, 4, "상담가이드평가이력", "상담가이드평가이력", "/admin/gud/guide/contents/contentsAssessmentHistory/manage.do"),
gudguideai("gud", 2300500L, 2300000L, 3, "NLP연동", "NLP연동", "0"),
gudguideainluIntentListmanage("gud", 2300501L, 2300500L, 4, "대화의도", "대화의도", "/admin/gud/guide/ai/nluIntentList/manage.do"),
gudguideainluEntityListmanage("gud", 2300502L, 2300500L, 4, "엔티티", "엔티티", "/admin/gud/guide/ai/nluEntityList/manage.do"),
gudguideainluLogmanage("gud", 2300503L, 2300500L, 4, "대화의도이력", "대화의도이력", "/admin/gud/guide/ai/nluLog/manage.do"),
gudguideainluTrainingmanage("gud", 2300504L, 2300500L, 4, "기계학습", "기계학습", "/admin/gud/guide/ai/nluTraining/manage.do"),
gudguideainluIntenttestmanage("gud", 2300505L, 2300500L, 4, "대화의도테스트", "대화의도테스트", "/admin/gud/guide/ai/nluIntenttest/manage.do"),
gudguideaisynonymListmanage("gud", 2300506L, 2300500L, 4, "고유용어사전", "고유용어사전", "/admin/gud/guide/ai/synonymList/manage.do"),
gudguideainluRecommendedLearningmanage("gud", 2300507L, 2300500L, 4, "학습추천", "학습추천", "/admin/gud/guide/ai/nluRecommendedLearning/manage.do"),
addraddrbot("addr", 2400000L, 1L, 2, "주소봇", "주소봇", "0"),
addraddrbotmanageAddrSectionmanage("addr", 2400100L, 2400000L, 3, "지명유사어관리", "지명유사어관리", "/admin/addr/addrbot/manageAddrSection/manage.do"),
addraddrbotmanageBuildNamemanage("addr", 2400200L, 2400000L, 3, "빌딩유사어관리", "빌딩유사어관리", "/admin/addr/addrbot/manageBuildName/manage.do"),
addraddrbotmanageSynonymmanage("addr", 2400300L, 2400000L, 3, "유의어전처리관리", "유의어전처리관리", "/admin/addr/addrbot/manageSynonym/manage.do"),
addraddrbotmanageBuildTypemanage("addr", 2400400L, 2400000L, 3, "발화건물유형관리", "발화건물유형관리", "/admin/addr/addrbot/manageBuildType/manage.do"),
addraddrbotmanageJusoUploadmanage("addr", 2400500L, 2400000L, 3, "주소월별업데이트", "주소월별업데이트", "/admin/addr/addrbot/manageJusoUpload/manage.do"),
addraddrbotmanageAddrProcessmanage("addr", 2400600L, 2400000L, 3, "주소봇처리내역", "주소봇처리내역", "/admin/addr/addrbot/manageAddrProcess/manage.do"),
addraddrbotaddrRealtimeListmanage("addr", 2400700L, 2400000L, 3, "실시간처리리스트", "실시간처리리스트", "/admin/addr/addrbot/addrRealtimeList/manage.do"),
botcom("botcom", 2500000L, 1L, 2, "BOT공통관리", "BOT공통관리", "0"),
botcommanageMentmanage("botcom", 2500100L, 2500000L, 3, "멘트관리", "멘트관리", "/admin/botcom/manageMent/manage.do"),
botcommanage("botcom", 2500200L, 2500000L, 3, "서비스별관리", "서비스별관리", "0"),
botcommanagemanageGreetMentmanage("botcom", 2500201L, 2500200L, 4, "요일시간대별멘트관리", "요일시간대별멘트관리", "/admin/botcom/manage/manageGreetMent/manage.do"),
botcommanagemanageHolidaymanage("botcom", 2500202L, 2500200L, 4, "휴무일관리", "휴무일관리", "/admin/botcom/manage/manageHoliday/manage.do"),
botcommanagemanageNaturalmanage("botcom", 2500203L, 2500200L, 4, "자연어전처리관리", "자연어전처리관리", "/admin/botcom/manage/manageNatural/manage.do"),
rcpv1("rcpv1", 2600000L, 1L, 2, "무인접수BOT", "무인접수BOT", "0"),
rcpv1receiptListmanage("rcpv1", 2600100L, 2600000L, 3, "접수리스트", "접수리스트", "/admin/rcpv1/receiptList/manage.do"),
rcpv1receiptRealtimeListmanage("rcpv1", 2600200L, 2600000L, 3, "실시간모니터링", "실시간모니터링", "/admin/rcpv1/receiptRealtimeList/manage.do"),
rcpv1receiptOutRealtimeListmanage("rcpv1", 2600300L, 2600000L, 3, "아웃바운드모니터링", "아웃바운드모니터링", "/admin/rcpv1/receiptOutRealtimeList/manage.do"),
rcpv1rcpReportmanage("rcpv1", 2600400L, 2600000L, 3, "일자별통계", "일자별통계", "/admin/rcpv1/rcpReport/manage.do"),
rcpv1rcpTimeReportmanage("rcpv1", 2600500L, 2600000L, 3, "시간대별통계", "시간대별통계", "/admin/rcpv1/rcpTimeReport/manage.do"),
vdo("vdo",2700000L,1L,2,"영상상담","영상상담","0"),
vdoincomingManageCategorymanage("vdo",2700100L,2700000L,3,"컨텐츠등록관리","컨텐츠등록관리","/admin/vdo/incomingManageCategory/manage.do"),
vdoincomingCounselingListmanage("vdo",2700200L,2700000L,3,"영상상담","영상상담","/admin/vdo/incomingCounselingList/manage.do"),
vdoincomingCounselingHistorymanage("vdo",2700300L,2700000L,3,"상담이력조회","상담이력조회","/admin/vdo/incomingCounselingHistory/manage.do"),
vdoincomingMvReportmanage("vdo",2700400L,2700000L,3,"사용통계","사용통계","/admin/vdo/incomingMvReport/manage.do"),
botmoni("botmoni", 2800000L, 1L, 2, "봇모니터링(확대형)", "봇모니터링(확대형)", "0"),
botmoniaddrRealtimeListExpansionmanage("botmoni", 2800100L, 2800000L, 3, "주소봇실시간처리리스트", "주소봇실시간처리리스트", "/admin/botmoni/addrRealtimeListExpansion/manage.do"),
botmonireceiptRealtimeListExpansionmanage("botmoni", 2800200L, 2800000L, 3, "무인접수봇실시간모니터링", "무인접수봇실시간모니터링", "/admin/botmoni/receiptRealtimeListExpansion/manage.do"),
botmoniguideRealtimeListExpansionmanage("botmoni", 2800300L, 2800000L, 3, "상담가이드실시간모니터링", "상담가이드실시간모니터링", "/admin/botmoni/guideRealtimeListExpansion/manage.do"),
commonsystem("common", 9000000L, 1L, 2, "시스템관리", "시스템관리", "0"), commonsystem("common", 9000000L, 1L, 2, "시스템관리", "시스템관리", "0"),
commonsystempolicyMenumanage("common", 9000001L, 9000000L, 3, "정책별 메뉴 조회", "정책별 메뉴 조회", "/admin/common/system/policyMenu/manage.do"), commonsystempolicyMenumanage("common", 9000001L, 9000000L, 3, "정책별 메뉴 조회", "정책별 메뉴 조회", "/admin/common/system/policyMenu/manage.do"),
commonsystemcustmanage("common", 9000002L, 9000000L, 3, "고객사 관리", "고객사 관리", "/admin/common/system/cust/manage.do"), commonsystemcustmanage("common", 9000002L, 9000000L, 3, "고객사 관리", "고객사 관리", "/admin/common/system/cust/manage.do"),
@ -121,6 +182,68 @@ public enum MenuResource {
rcpoprmanagebgmmanage, rcpoprmanagebgmmanage,
rcpoprmanagettstagmanage, rcpoprmanagettstagmanage,
gudguide,
gudguideconsultationRealtimemanage,
gudguideadminMonitoringmanage,
gudguidehistory,
gudguidehistoryscrchmanage,
gudguidehistoryoutboxmanage,
gudguidehistoryinboxmanage,
gudguidecontents,
gudguidecontentslistmanage,
gudguidecontentsmanagermanage,
gudguidecontentscontentsAssessmentmanage,
gudguidecontentscontentsAssessmentHistorymanage,
gudguideai,
gudguideainluIntentListmanage,
gudguideainluEntityListmanage,
gudguideainluLogmanage,
gudguideainluTrainingmanage,
gudguideainluIntenttestmanage,
gudguideaisynonymListmanage,
gudguideainluRecommendedLearningmanage,
addraddrbot,
addraddrbotmanageAddrSectionmanage,
addraddrbotmanageBuildNamemanage,
addraddrbotmanageSynonymmanage,
addraddrbotmanageBuildTypemanage,
addraddrbotmanageJusoUploadmanage,
addraddrbotmanageAddrProcessmanage,
addraddrbotaddrRealtimeListmanage,
botcom,
botcommanageMentmanage,
botcommanage,
botcommanagemanageGreetMentmanage,
botcommanagemanageHolidaymanage,
botcommanagemanageNaturalmanage,
rcpv1,
rcpv1receiptListmanage,
rcpv1receiptRealtimeListmanage,
rcpv1receiptOutRealtimeListmanage,
rcpv1rcpReportmanage,
rcpv1rcpTimeReportmanage,
vdo,
vdoincomingManageCategorymanage,
vdoincomingCounselingListmanage,
vdoincomingCounselingHistorymanage,
vdoincomingMvReportmanage,
botmoni,
botmoniaddrRealtimeListExpansionmanage,
botmonireceiptRealtimeListExpansionmanage,
botmoniguideRealtimeListExpansionmanage,
commonsystem, commonsystem,
commonsystemcustmanage, commonsystemcustmanage,
commonsystemserviceGroupmanage, commonsystemserviceGroupmanage,

@ -44,6 +44,65 @@ public enum PolicyResource {
rcpoprmanagettstagmanageRead(MenuResource.rcpoprmanagettstagmanage, "TTS태그관리읽기권한", "Y", 1, Arrays.asList()), rcpoprmanagettstagmanageRead(MenuResource.rcpoprmanagettstagmanage, "TTS태그관리읽기권한", "Y", 1, Arrays.asList()),
gudguideRead(MenuResource.gudguide,"상담가이드읽기권한","Y",1,Arrays.asList()),
gudguideconsultationRealtimemanageRead(MenuResource.gudguideconsultationRealtimemanage,"실시간상담읽기권한","Y",1,Arrays.asList()),
gudguideadminMonitoringmanageRead(MenuResource.gudguideadminMonitoringmanage,"관리자모니터링읽기권한","Y",1,Arrays.asList()),
gudguidehistoryRead(MenuResource.gudguidehistory,"상담이력관리읽기권한","Y",1,Arrays.asList()),
gudguidehistoryscrchmanageRead(MenuResource.gudguidehistoryscrchmanage,"상담이력조회읽기권한","Y",1,Arrays.asList()),
gudguidehistoryoutboxmanageRead(MenuResource.gudguidehistoryoutboxmanage,"상담이력전송함읽기권한","Y",1,Arrays.asList()),
gudguidehistoryinboxmanageRead(MenuResource.gudguidehistoryinboxmanage,"상담이력수신함읽기권한","Y",1,Arrays.asList()),
gudguidecontentsRead(MenuResource.gudguidecontents,"상담컨텐츠읽기권한","Y",1,Arrays.asList()),
gudguidecontentslistmanageRead(MenuResource.gudguidecontentslistmanage,"상담가이드조회읽기권한","Y",1,Arrays.asList()),
gudguidecontentsmanagermanageRead(MenuResource.gudguidecontentsmanagermanage,"상담가이드관리읽기권한","Y",1,Arrays.asList()),
gudguidecontentscontentsAssessmentmanageRead(MenuResource.gudguidecontentscontentsAssessmentmanage,"상담가이드평가읽기권한","Y",1,Arrays.asList()),
gudguidecontentscontentsAssessmentHistorymanageRead(MenuResource.gudguidecontentscontentsAssessmentHistorymanage,"상담가이드평가이력읽기권한","Y",1,Arrays.asList()),
gudguideaiRead(MenuResource.gudguideai,"NLP연동읽기권한","Y",1,Arrays.asList()),
gudguideainluIntentListmanageRead(MenuResource.gudguideainluIntentListmanage,"대화의도읽기권한","Y",1,Arrays.asList()),
gudguideainluEntityListmanageRead(MenuResource.gudguideainluEntityListmanage,"엔티티읽기권한","Y",1,Arrays.asList()),
gudguideainluLogmanageRead(MenuResource.gudguideainluLogmanage,"대화의도이력읽기권한","Y",1,Arrays.asList()),
gudguideainluTrainingmanageRead(MenuResource.gudguideainluTrainingmanage,"기계학습읽기권한","Y",1,Arrays.asList()),
gudguideainluIntenttestmanageRead(MenuResource.gudguideainluIntenttestmanage,"대화의도테스트읽기권한","Y",1,Arrays.asList()),
gudguideaisynonymListmanageRead(MenuResource.gudguideaisynonymListmanage,"고유용어사전읽기권한","Y",1,Arrays.asList()),
gudguideainluRecommendedLearningmanageRead(MenuResource.gudguideainluRecommendedLearningmanage,"학습추천읽기권한","Y",1,Arrays.asList()),
addraddrbotRead(MenuResource.addraddrbot,"주소봇읽기권한","Y",1,Arrays.asList()),
addraddrbotmanageAddrSectionmanageRead(MenuResource.addraddrbotmanageAddrSectionmanage,"지명유사어관리읽기권한","Y",1,Arrays.asList()),
addraddrbotmanageBuildNamemanageRead(MenuResource.addraddrbotmanageBuildNamemanage,"빌딩유사어관리읽기권한","Y",1,Arrays.asList()),
addraddrbotmanageSynonymmanageRead(MenuResource.addraddrbotmanageSynonymmanage,"유의어전처리관리읽기권한","Y",1,Arrays.asList()),
addraddrbotmanageBuildTypemanageRead(MenuResource.addraddrbotmanageBuildTypemanage,"발화건물유형관리읽기권한","Y",1,Arrays.asList()),
addraddrbotmanageJusoUploadmanageRead(MenuResource.addraddrbotmanageJusoUploadmanage,"주소월별업데이트읽기권한","Y",1,Arrays.asList()),
addraddrbotmanageAddrProcessmanageRead(MenuResource.addraddrbotmanageAddrProcessmanage,"주소봇처리내역읽기권한","Y",1,Arrays.asList()),
addraddrbotaddrRealtimeListmanageRead(MenuResource.addraddrbotaddrRealtimeListmanage,"실시간처리리스트읽기권한","Y",1,Arrays.asList()),
botcomRead(MenuResource.botcom,"BOT공통관리읽기권한","Y",1,Arrays.asList()),
botcommanageMentmanageRead(MenuResource.botcommanageMentmanage,"멘트관리읽기권한","Y",1,Arrays.asList()),
botcommanageRead(MenuResource.botcommanage,"서비스별관리읽기권한","Y",1,Arrays.asList()),
botcommanagemanageGreetMentmanageRead(MenuResource.botcommanagemanageGreetMentmanage,"요일시간대별멘트관리읽기권한","Y",1,Arrays.asList()),
botcommanagemanageHolidaymanageRead(MenuResource.botcommanagemanageHolidaymanage,"휴무일관리읽기권한","Y",1,Arrays.asList()),
botcommanagemanageNaturalmanageRead(MenuResource.botcommanagemanageNaturalmanage,"자연어전처리관리읽기권한","Y",1,Arrays.asList()),
rcpv1Read(MenuResource.rcpv1,"무인접수BOT읽기권한","Y",1,Arrays.asList()),
rcpv1receiptListmanageRead(MenuResource.rcpv1receiptListmanage,"접수리스트읽기권한","Y",1,Arrays.asList()),
rcpv1receiptRealtimeListmanageRead(MenuResource.rcpv1receiptRealtimeListmanage,"시릿간모니터링읽기권한","Y",1,Arrays.asList()),
rcpv1receiptOutRealtimeListmanageRead(MenuResource.rcpv1receiptOutRealtimeListmanage,"아웃바운드모니터링읽기권한","Y",1,Arrays.asList()),
rcpv1rcpReportmanageRead(MenuResource.rcpv1rcpReportmanage,"일자별통계읽기권한","Y",1,Arrays.asList()),
rcpv1rcpTimeReportmanageRead(MenuResource.rcpv1rcpTimeReportmanage,"시간대별통계읽기권한","Y",1,Arrays.asList()),
vdoRead(MenuResource.vdo,"영상상담읽기권한","Y",1,Arrays.asList()),
vdoincomingManageCategorymanageRead(MenuResource.vdoincomingManageCategorymanage,"컨텐츠등록관리읽기권한","Y",1,Arrays.asList()),
vdoincomingCounselingListmanageRead(MenuResource.vdoincomingCounselingListmanage,"영상상담읽기권한","Y",1,Arrays.asList()),
vdoincomingCounselingHistorymanageRead(MenuResource.vdoincomingCounselingHistorymanage,"상담이력조회읽기권한","Y",1,Arrays.asList()),
vdoincomingMvReportmanageRead(MenuResource.vdoincomingMvReportmanage,"사용통계읽기권한","Y",1,Arrays.asList()),
botmoniRead(MenuResource.botmoni,"봇모니터링(확대형)읽기권한","Y",1,Arrays.asList()),
botmoniaddrRealtimeListExpansionmanageRead(MenuResource.botmoniaddrRealtimeListExpansionmanage,"주소봇실시간처리리스트읽기권한","Y",1,Arrays.asList()),
botmonireceiptRealtimeListExpansionmanageRead(MenuResource.botmonireceiptRealtimeListExpansionmanage,"무인접수봇실시간모니터링읽기권한","Y",1,Arrays.asList()),
botmoniguideRealtimeListExpansionmanageRead(MenuResource.botmoniguideRealtimeListExpansionmanage,"상담가이드실시간모니터링읽기권한","Y",1,Arrays.asList()),
commonsystemRead(MenuResource.commonsystem, "시스템관리읽기권한", "Y", 10000, Arrays.asList()), commonsystemRead(MenuResource.commonsystem, "시스템관리읽기권한", "Y", 10000, Arrays.asList()),
// commonsystempolicyMenumanageRead(MenuResource.commonsystempolicyMenumanage, "정책별 메뉴 조회읽기권한", "Y", 1000000, Arrays.asList()), // commonsystempolicyMenumanageRead(MenuResource.commonsystempolicyMenumanage, "정책별 메뉴 조회읽기권한", "Y", 1000000, Arrays.asList()),
@ -76,6 +135,57 @@ public enum PolicyResource {
rcpoprmanagettstagmanageFull(MenuResource.rcpoprmanagettstagmanage, "TTS태그관리전체권한", "Y", 1, Arrays.asList()), rcpoprmanagettstagmanageFull(MenuResource.rcpoprmanagettstagmanage, "TTS태그관리전체권한", "Y", 1, Arrays.asList()),
gudguideconsultationRealtimemanageFull(MenuResource.gudguideconsultationRealtimemanage,"실시간상담전체권한","Y",1,Arrays.asList()),
gudguideadminMonitoringmanageFull(MenuResource.gudguideadminMonitoringmanage,"관리자모니터링전체권한","Y",1,Arrays.asList()),
gudguidehistoryFull(MenuResource.gudguidehistory,"상담이력관리전체권한","Y",1,Arrays.asList()),
gudguidehistoryscrchmanageFull(MenuResource.gudguidehistoryscrchmanage,"상담이력조회전체권한","Y",1,Arrays.asList()),
gudguidehistoryoutboxmanageFull(MenuResource.gudguidehistoryoutboxmanage,"상담이력전송함전체권한","Y",1,Arrays.asList()),
gudguidehistoryinboxmanageFull(MenuResource.gudguidehistoryinboxmanage,"상담이력수신함전체권한","Y",1,Arrays.asList()),
gudguidecontentslistmanageFull(MenuResource.gudguidecontentslistmanage,"상담가이드조회전체권한","Y",1,Arrays.asList()),
gudguidecontentsmanagermanageFull(MenuResource.gudguidecontentsmanagermanage,"상담가이드관리전체권한","Y",1,Arrays.asList()),
gudguidecontentscontentsAssessmentmanageFull(MenuResource.gudguidecontentscontentsAssessmentmanage,"상담가이드평가전체권한","Y",1,Arrays.asList()),
gudguidecontentscontentsAssessmentHistorymanageFull(MenuResource.gudguidecontentscontentsAssessmentHistorymanage,"상담가이드평가이력전체권한","Y",1,Arrays.asList()),
gudguideainluIntentListmanageFull(MenuResource.gudguideainluIntentListmanage,"대화의도전체권한","Y",1,Arrays.asList()),
gudguideainluEntityListmanageFull(MenuResource.gudguideainluEntityListmanage,"엔티티전체권한","Y",1,Arrays.asList()),
gudguideainluLogmanageFull(MenuResource.gudguideainluLogmanage,"대화의도이력전체권한","Y",1,Arrays.asList()),
gudguideainluTrainingmanageFull(MenuResource.gudguideainluTrainingmanage,"기계학습전체권한","Y",1,Arrays.asList()),
gudguideainluIntenttestmanageFull(MenuResource.gudguideainluIntenttestmanage,"대화의도테스트전체권한","Y",1,Arrays.asList()),
gudguideaisynonymListmanageFull(MenuResource.gudguideaisynonymListmanage,"고유용어사전전체권한","Y",1,Arrays.asList()),
gudguideainluRecommendedLearningmanageFull(MenuResource.gudguideainluRecommendedLearningmanage,"학습추천전체권한","Y",1,Arrays.asList()),
addraddrbotmanageAddrSectionmanageFull(MenuResource.addraddrbotmanageAddrSectionmanage,"지명유사어관리전체권한","Y",1,Arrays.asList()),
addraddrbotmanageBuildNamemanageFull(MenuResource.addraddrbotmanageBuildNamemanage,"빌딩유사어관리전체권한","Y",1,Arrays.asList()),
addraddrbotmanageSynonymmanageFull(MenuResource.addraddrbotmanageSynonymmanage,"유의어전처리관리전체권한","Y",1,Arrays.asList()),
addraddrbotmanageBuildTypemanageFull(MenuResource.addraddrbotmanageBuildTypemanage,"발화건물유형관리전체권한","Y",1,Arrays.asList()),
addraddrbotmanageJusoUploadmanageFull(MenuResource.addraddrbotmanageJusoUploadmanage,"주소월별업데이트전체권한","Y",1,Arrays.asList()),
addraddrbotmanageAddrProcessmanageFull(MenuResource.addraddrbotmanageAddrProcessmanage,"주소봇처리내역전체권한","Y",1,Arrays.asList()),
addraddrbotaddrRealtimeListmanageFull(MenuResource.addraddrbotaddrRealtimeListmanage,"실시간처리리스트전체권한","Y",1,Arrays.asList()),
botcommanageMentmanageFull(MenuResource.botcommanageMentmanage,"멘트관리전체권한","Y",1,Arrays.asList()),
botcommanagemanageGreetMentmanageFull(MenuResource.botcommanagemanageGreetMentmanage,"요일시간대별멘트관리전체권한","Y",1,Arrays.asList()),
botcommanagemanageHolidaymanageFull(MenuResource.botcommanagemanageHolidaymanage,"휴무일관리전체권한","Y",1,Arrays.asList()),
botcommanagemanageNaturalmanageFull(MenuResource.botcommanagemanageNaturalmanage,"자연어전처리관리전체권한","Y",1,Arrays.asList()),
rcpv1receiptListmanageFull(MenuResource.rcpv1receiptListmanage,"접수리스트전체권한","Y",1,Arrays.asList()),
rcpv1receiptRealtimeListmanageFull(MenuResource.rcpv1receiptRealtimeListmanage,"시릿간모니터링전체권한","Y",1,Arrays.asList()),
rcpv1receiptOutRealtimeListmanageFull(MenuResource.rcpv1receiptOutRealtimeListmanage,"아웃바운드모니터링전체권한","Y",1,Arrays.asList()),
rcpv1rcpReportmanageFull(MenuResource.rcpv1rcpReportmanage,"일자별통계전체권한","Y",1,Arrays.asList()),
rcpv1rcpTimeReportmanageFull(MenuResource.rcpv1rcpTimeReportmanage,"시간대별통계전체권한","Y",1,Arrays.asList()),
vdoincomingManageCategorymanageFull(MenuResource.vdoincomingManageCategorymanage,"컨텐츠등록관리전체권한","Y",1,Arrays.asList()),
vdoincomingCounselingListmanageFull(MenuResource.vdoincomingCounselingListmanage,"영상상담전체권한","Y",1,Arrays.asList()),
vdoincomingCounselingHistorymanageFull(MenuResource.vdoincomingCounselingHistorymanage,"상담이력조회전체권한","Y",1,Arrays.asList()),
vdoincomingMvReportmanageFull(MenuResource.vdoincomingMvReportmanage,"사용통계전체권한","Y",1,Arrays.asList()),
botmoniaddrRealtimeListExpansionmanageFull(MenuResource.botmoniaddrRealtimeListExpansionmanage,"주소봇실시간처리리스트전체권한","Y",1,Arrays.asList()),
botmonireceiptRealtimeListExpansionmanageFull(MenuResource.botmonireceiptRealtimeListExpansionmanage,"무인접수봇실시간모니터링전체권한","Y",1,Arrays.asList()),
botmoniguideRealtimeListExpansionmanageFull(MenuResource.botmoniguideRealtimeListExpansionmanage,"상담가이드실시간모니터링전체권한","Y",1,Arrays.asList()),
commonsystemcustmanageFull(MenuResource.commonsystemcustmanage, "고객사 관리전체권한", "Y", 1000000, Arrays.asList()), commonsystemcustmanageFull(MenuResource.commonsystemcustmanage, "고객사 관리전체권한", "Y", 1000000, Arrays.asList()),
commonsystemserviceGroupmanageFull(MenuResource.commonsystemserviceGroupmanage, "서비스그룹 관리전체권한", "Y", 1000000, Arrays.asList()), commonsystemserviceGroupmanageFull(MenuResource.commonsystemserviceGroupmanage, "서비스그룹 관리전체권한", "Y", 1000000, Arrays.asList()),
commonsystemgroupAuthmanageFull(MenuResource.commonsystemgroupAuthmanage, "그룹별 권한관리전체권한", "Y", 10000, Arrays.asList()), commonsystemgroupAuthmanageFull(MenuResource.commonsystemgroupAuthmanage, "그룹별 권한관리전체권한", "Y", 10000, Arrays.asList()),
@ -148,6 +258,64 @@ public enum PolicyResource {
rcpoprmanagebgmmanageRead, rcpoprmanagebgmmanageRead,
rcpoprmanagettstagmanageRead, rcpoprmanagettstagmanageRead,
gudguideRead,
gudguideconsultationRealtimemanageRead,
gudguideadminMonitoringmanageRead,
gudguidehistoryRead,
gudguidehistoryscrchmanageRead,
gudguidehistoryoutboxmanageRead,
gudguidehistoryinboxmanageRead,
gudguidecontentsRead,
gudguidecontentslistmanageRead,
gudguidecontentsmanagermanageRead,
gudguidecontentscontentsAssessmentmanageRead,
gudguidecontentscontentsAssessmentHistorymanageRead,
gudguideaiRead,
gudguideainluIntentListmanageRead,
gudguideainluEntityListmanageRead,
gudguideainluLogmanageRead,
gudguideainluTrainingmanageRead,
gudguideainluIntenttestmanageRead,
gudguideaisynonymListmanageRead,
gudguideainluRecommendedLearningmanageRead,
addraddrbotRead,
addraddrbotmanageAddrSectionmanageRead,
addraddrbotmanageBuildNamemanageRead,
addraddrbotmanageSynonymmanageRead,
addraddrbotmanageBuildTypemanageRead,
addraddrbotmanageJusoUploadmanageRead,
addraddrbotmanageAddrProcessmanageRead,
addraddrbotaddrRealtimeListmanageRead,
botcomRead,
botcommanageMentmanageRead,
botcommanageRead,
botcommanagemanageGreetMentmanageRead,
botcommanagemanageHolidaymanageRead,
botcommanagemanageNaturalmanageRead,
rcpv1Read,
rcpv1receiptListmanageRead,
rcpv1receiptRealtimeListmanageRead,
rcpv1receiptOutRealtimeListmanageRead,
rcpv1rcpReportmanageRead,
rcpv1rcpTimeReportmanageRead,
vdoRead,
vdoincomingManageCategorymanageRead,
vdoincomingCounselingListmanageRead,
vdoincomingCounselingHistorymanageRead,
vdoincomingMvReportmanageRead,
botmoniRead,
botmoniaddrRealtimeListExpansionmanageRead,
botmonireceiptRealtimeListExpansionmanageRead,
botmoniguideRealtimeListExpansionmanageRead,
commonsystemRead, commonsystemRead,
commonsystemcustmanageRead, commonsystemcustmanageRead,
commonsystemserviceGroupmanageRead, commonsystemserviceGroupmanageRead,
@ -176,6 +344,55 @@ public enum PolicyResource {
rcpoprmanagebgmmanageFull, rcpoprmanagebgmmanageFull,
rcpoprmanagettstagmanageFull, rcpoprmanagettstagmanageFull,
gudguideconsultationRealtimemanageFull,
gudguideadminMonitoringmanageFull,
gudguidehistoryFull,
gudguidehistoryscrchmanageFull,
gudguidehistoryoutboxmanageFull,
gudguidehistoryinboxmanageFull,
gudguidecontentslistmanageFull,
gudguidecontentsmanagermanageFull,
gudguidecontentscontentsAssessmentmanageFull,
gudguidecontentscontentsAssessmentHistorymanageFull,
gudguideainluIntentListmanageFull,
gudguideainluEntityListmanageFull,
gudguideainluLogmanageFull,
gudguideainluTrainingmanageFull,
gudguideainluIntenttestmanageFull,
gudguideaisynonymListmanageFull,
gudguideainluRecommendedLearningmanageFull,
addraddrbotmanageAddrSectionmanageFull,
addraddrbotmanageBuildNamemanageFull,
addraddrbotmanageSynonymmanageFull,
addraddrbotmanageBuildTypemanageFull,
addraddrbotmanageJusoUploadmanageFull,
addraddrbotmanageAddrProcessmanageFull,
addraddrbotaddrRealtimeListmanageFull,
botcommanageMentmanageFull,
botcommanagemanageGreetMentmanageFull,
botcommanagemanageHolidaymanageFull,
botcommanagemanageNaturalmanageFull,
rcpv1receiptListmanageFull,
rcpv1receiptRealtimeListmanageFull,
rcpv1receiptOutRealtimeListmanageFull,
rcpv1rcpReportmanageFull,
rcpv1rcpTimeReportmanageFull,
vdoincomingManageCategorymanageFull,
vdoincomingCounselingListmanageFull,
vdoincomingCounselingHistorymanageFull,
vdoincomingMvReportmanageFull,
botmoniaddrRealtimeListExpansionmanageFull,
botmonireceiptRealtimeListExpansionmanageFull,
botmoniguideRealtimeListExpansionmanageFull,
commonsystemcustmanageFull, commonsystemcustmanageFull,
commonsystemserviceGroupmanageFull, commonsystemserviceGroupmanageFull,
commonsystemgroupAuthmanageFull, commonsystemgroupAuthmanageFull,

@ -4,12 +4,16 @@ import com.fasterxml.jackson.databind.ObjectMapper;
//import com.icomsys.main_vm.db.jpa.repo.bot.TbBotAuthMenuRepo; //import com.icomsys.main_vm.db.jpa.repo.bot.TbBotAuthMenuRepo;
//import com.icomsys.main_vm.db.jpa.repo.bot.TbBotMenuRepo; //import com.icomsys.main_vm.db.jpa.repo.bot.TbBotMenuRepo;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.icomsys.main_vm.biz.common.login.TokenProvider;
import com.icomsys.main_vm.common.code.enumresource.SessionResource; import com.icomsys.main_vm.common.code.enumresource.SessionResource;
import com.icomsys.main_vm.db.mybatis.alias.LoginVO; import com.icomsys.main_vm.db.mybatis.alias.LoginVO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.util.StringUtils;
import org.springframework.web.filter.OncePerRequestFilter; import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.web.util.ContentCachingRequestWrapper; import org.springframework.web.util.ContentCachingRequestWrapper;
import org.springframework.web.util.ContentCachingResponseWrapper; import org.springframework.web.util.ContentCachingResponseWrapper;
@ -27,6 +31,8 @@ import java.time.LocalDateTime;
public class LoginFilter extends OncePerRequestFilter { public class LoginFilter extends OncePerRequestFilter {
private final ObjectMapper objectMapper; private final ObjectMapper objectMapper;
private final TokenProvider tokenProvider;
// private final TbBotAuthMenuRepo tbBotAuthMenuRepo; // private final TbBotAuthMenuRepo tbBotAuthMenuRepo;
// private final TbBotMenuRepo tbBotMenuRepo; // private final TbBotMenuRepo tbBotMenuRepo;
// @Value("${Server.servlet.context-path}") // @Value("${Server.servlet.context-path}")
@ -43,21 +49,12 @@ public class LoginFilter extends OncePerRequestFilter {
// log.info("필터 요청유알엘 - {}, {}", reqUrl); // log.info("필터 요청유알엘 - {}, {}", reqUrl);
if (reqUrl.startsWith("/re1")){
response.sendError(490);
return;
}
if (reqUrl.startsWith("/re2")){
response.sendError(491);
return;
}
if (reqUrl.startsWith("/lib") if (reqUrl.startsWith("/lib")
|| reqUrl.startsWith("/css") || reqUrl.startsWith("/css")
|| reqUrl.startsWith("/images") || reqUrl.startsWith("/images")
|| reqUrl.startsWith("/js") || reqUrl.startsWith("/js")
|| reqUrl.startsWith("/adm") || reqUrl.startsWith("/adm/")
|| reqUrl.startsWith("/ws") || reqUrl.startsWith("/ws")
|| reqUrl.startsWith("/rest") || reqUrl.startsWith("/rest")
|| reqUrl.startsWith("/create") || reqUrl.startsWith("/create")
@ -66,9 +63,28 @@ public class LoginFilter extends OncePerRequestFilter {
|| reqUrl.startsWith("/error") || reqUrl.startsWith("/error")
|| reqUrl.startsWith("/files") || reqUrl.startsWith("/files")
|| reqUrl.equals("/") || reqUrl.equals("/")
// || reqUrl.equals("/tokenLogin")
) { ) {
filterChain.doFilter(request, response); filterChain.doFilter(request, response);
} else { } else {
// 1. Request Header 에서 JWT 토큰 추출
String token = resolveToken((HttpServletRequest) request);
// 2. validateToken 으로 토큰 유효성 검사
if (token != null && tokenProvider.validateToken(token)) {
// Todo: 토큰 유효성 검사 후 에러 처리
// 토큰이 유효할 경우 토큰에서 Authentication 객체를 가지고 와서 SecurityContext 에 저장
Authentication authentication = tokenProvider.getAuthentication(token);
SecurityContextHolder.getContext().setAuthentication(authentication);
response.sendError(403);
}
filterChain.doFilter(request, response);
}
/*
if (request.getSession().getAttribute(SessionResource.UserVO.getName()) == null || request.getSession().getAttribute(SessionResource.UserVO.getName()).equals("")) { if (request.getSession().getAttribute(SessionResource.UserVO.getName()) == null || request.getSession().getAttribute(SessionResource.UserVO.getName()).equals("")) {
log.info("session Check"); log.info("session Check");
response.sendError(490); response.sendError(490);
@ -104,6 +120,17 @@ public class LoginFilter extends OncePerRequestFilter {
} }
} }
// response.copyBodyToResponse(); // response.copyBodyToResponse();
*/
}
// Request Header 에서 토큰 정보 추출
private String resolveToken(HttpServletRequest request) {
String bearerToken = request.getHeader("Authorization");
if (StringUtils.hasText(bearerToken) && bearerToken.startsWith("Bearer")) {
return bearerToken.substring(7);
}
return null;
} }
} }

@ -1,5 +1,8 @@
package com.icomsys.main_vm.db.jpa.entity.system; package com.icomsys.main_vm.db.jpa.entity.system;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.icomsys.main_vm.biz.common.login.res.UserVo; import com.icomsys.main_vm.biz.common.login.res.UserVo;
import com.icomsys.main_vm.biz.common.system.vo.SystemBotUserUpdateReq; import com.icomsys.main_vm.biz.common.system.vo.SystemBotUserUpdateReq;
import com.icomsys.main_vm.db.mybatis.alias.LoginVO; import com.icomsys.main_vm.db.mybatis.alias.LoginVO;
@ -49,10 +52,12 @@ public class TbBotUser {
private String useYn; private String useYn;
@Column(name = "REGIST_ID", nullable = false, length = 20) @Column(name = "REGIST_ID", nullable = false, length = 20)
private String registId; private String registId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "REGIST_DATE", nullable = false) @Column(name = "REGIST_DATE", nullable = false)
private LocalDateTime registDate; private LocalDateTime registDate;
@Column(name = "UPDATE_ID", nullable = true, length = 20) @Column(name = "UPDATE_ID", nullable = true, length = 20)
private String updateId; private String updateId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "UPDATE_DATE", nullable = true) @Column(name = "UPDATE_DATE", nullable = true)
private LocalDateTime updateDate; private LocalDateTime updateDate;

@ -22,7 +22,7 @@ public class TbCustPolicy {
@Column(name = "SERVICE_GROUP", nullable = false, length = 20) @Column(name = "SERVICE_GROUP", nullable = false, length = 20)
private String serviceGroup; private String serviceGroup;
@Id @Id
@Column(name = "POLICY_VAL", nullable = false, length = 50) @Column(name = "POLICY_VAL", nullable = false, length = 100)
private String policyVal; private String policyVal;
@Id @Id
@Column(name = "CUST_CODE", nullable = false, length = 20) @Column(name = "CUST_CODE", nullable = false, length = 20)

@ -63,6 +63,8 @@ public class TbServiceGrouop {
this.updateDate = updateDate; this.updateDate = updateDate;
} }
public TbServiceGrouop toUpdateMainService(SystemCustSaveSubReq dto, UserVo uv) { public TbServiceGrouop toUpdateMainService(SystemCustSaveSubReq dto, UserVo uv) {
if (dto.getAddServiceGroupName() != null && !dto.getAddServiceGroupName().equals("")) { if (dto.getAddServiceGroupName() != null && !dto.getAddServiceGroupName().equals("")) {
this.serviceGroupName = dto.getAddServiceGroupName(); this.serviceGroupName = dto.getAddServiceGroupName();

@ -26,7 +26,7 @@ public class TbServiceGroupPolicy {
@Column(name = "SERVICE_GROUP", nullable = false, length = 20) @Column(name = "SERVICE_GROUP", nullable = false, length = 20)
private String serviceGroup; private String serviceGroup;
@Id @Id
@Column(name = "POLICY_VAL", nullable = false, length = 50) @Column(name = "POLICY_VAL", nullable = false, length = 100)
private String policyVal; private String policyVal;
@Id @Id
@Column(name = "CUST_CODE", nullable = false, length = 20) @Column(name = "CUST_CODE", nullable = false, length = 20)

@ -7,8 +7,9 @@ spring:
activate: activate:
on-profile: local on-profile: local
datasource: datasource:
url: jdbc:log4jdbc:mysql://dev-ics-db.c9i6xgmcxx18.ap-northeast-2.rds.amazonaws.com/UPLUS_CINNAMON # url: jdbc:log4jdbc:mysql://dev-ics-db.c9i6xgmcxx18.ap-northeast-2.rds.amazonaws.com/UPLUS_CINNAMON
username: ics_mgr url: jdbc:log4jdbc:mysql://192.168.0.26/ICS_CINNAMON_V2
username: icomsys
password: "#pass180901" password: "#pass180901"
# url: jdbc:log4jdbc:oracle:thin:@localhost:1522:XE # url: jdbc:log4jdbc:oracle:thin:@localhost:1522:XE
# username: LG_LOCAL # username: LG_LOCAL
@ -28,6 +29,8 @@ spring:
dialect: com.icomsys.main_vm.common.util.CustomDialect dialect: com.icomsys.main_vm.common.util.CustomDialect
generate_statistics: true generate_statistics: true
jwt:
secret: f2d7e5002d67c8d118ebf800274b6a5c83ed7b3d3518b2cddcd7226f7484eb34
#https://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/dialect/package-summary.html #https://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/dialect/package-summary.html
feign: feign:

@ -0,0 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 실시간처리리스트</p>
</section>
</html>

@ -0,0 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 주소봇처리내역</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 발화건물유형관리
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 주소월별업데이트
</p>
</section>
</html>

@ -0,0 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 지명유사어</p>
</section>
</html>

@ -0,0 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 빌딩유사어</p>
</section>
</html>

@ -0,0 +1,25 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 유의어전처리</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 요일시간대별멘트관리
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 휴무일관리
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 자연어전처리
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 멘트관리
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 주소봇실시간처리리스트
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담가이드실시간모니터링
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 무인접수봇실시간모니터링
</p>
</section>
</html>

@ -25,7 +25,7 @@
<header id="header"> <header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%> <%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header> </header>
<c:import url="/adm/menu/getLnbMenu.do" /> <%-- <c:import url="/adm/menu/getLnbMenu.do" />--%>
<script type="text/javascript" src="<c:url value='/aajs/statisticsDashboard.js' />"></script> <script type="text/javascript" src="<c:url value='/aajs/statisticsDashboard.js' />"></script>

@ -112,6 +112,7 @@
$('#newCustUseYn').niceSelect('update'); $('#newCustUseYn').niceSelect('update');
var html = ''; var html = '';
result.responseJSON.addServiceAuthList.forEach(function (e, i) { result.responseJSON.addServiceAuthList.forEach(function (e, i) {
console.log(i);
var serviceGroup = e.addServiceGroup; var serviceGroup = e.addServiceGroup;
var serviceGroupName = e.addServiceGroupName; var serviceGroupName = e.addServiceGroupName;
var serviceGroupDesc = e.addServiceGroupDesc; var serviceGroupDesc = e.addServiceGroupDesc;
@ -142,7 +143,7 @@
+ ' <th class="tl">서비스그룹</th>' + ' <th class="tl">서비스그룹</th>'
+ ' <td>' + ' <td>'
+ ' <div class="ipt_box">' + ' <div class="ipt_box">'
+ ' <input type="text" id="addServiceGroupName' + serviceGroupName + '" value="' + serviceGroupName + '" name="" class="">' + ' <input type="text" id="addServiceGroupName' + i + '" value="' + serviceGroupName + '" name="" class="">'
+ ' </div>' + ' </div>'
+ ' </td>' + ' </td>'
+ '</tr>' + '</tr>'
@ -150,7 +151,7 @@
+ ' <th class="tl">서비스코드</th>' + ' <th class="tl">서비스코드</th>'
+ ' <td>' + ' <td>'
+ ' <div class="ipt_box">' + ' <div class="ipt_box">'
+ ' <input type="text" id="addServiceGroup' + serviceGroup + '" value="' + serviceGroup + '" name="" readonly class="">' + ' <input type="text" id="addServiceGroup' + i + '" value="' + serviceGroup + '" name="" readonly class="">'
+ ' </div>' + ' </div>'
+ ' </td>' + ' </td>'
+ '</tr>' + '</tr>'
@ -158,14 +159,14 @@
+ ' <th class="tl">시나리오코드</th>' + ' <th class="tl">시나리오코드</th>'
+ ' <td>' + ' <td>'
+ ' <div class="ipt_box">' + ' <div class="ipt_box">'
+ ' <input type="text" id="addOprMngCode' + oprMngCode + '" value="' + oprMngCode + '" name="" readonly class="">' + ' <input type="text" id="addOprMngCode' + i + '" value="' + oprMngCode + '" name="" readonly class="">'
+ ' </div>' + ' </div>'
+ ' </td>' + ' </td>'
+ '</tr>' + '</tr>'
+ ' <th class="tl">서비스그룹설명</th>' + ' <th class="tl">서비스그룹설명</th>'
+ ' <td>' + ' <td>'
+ ' <div class="ipt_box">' + ' <div class="ipt_box">'
+ ' <input type="text" id="addServiceGroupDesc' + serviceGroupDesc + '" value="' + serviceGroupDesc + '" name="" class="">' + ' <input type="text" id="addServiceGroupDesc' + i + '" value="' + serviceGroupDesc + '" name="" class="">'
+ ' </div>' + ' </div>'
+ ' </td>' + ' </td>'
+ '</tr>' + '</tr>'
@ -296,17 +297,22 @@
var addServiceAuthList = new Array(); var addServiceAuthList = new Array();
$(".tbl-card").children('li').each(function (i, e) { $(".tbl-card").children('li').each(function (i, e) {
console.log('get-----'+i);
var addServiceGroup = $(this).find("input:eq(1)").attr("id").replaceAll("addServiceGroup", ""); var addServiceGroup = $('#'+$(this).find("input:eq(1)").attr("id")).val();
console.log('addServiceGroup-----'+addServiceGroup);
var addServiceAuth = {}; var addServiceAuth = {};
// var addServiceGroupName = $(this).find("input:eq(0)").attr("id").replaceAll("addServiceGroupName", ""); // var addServiceGroupName = $(this).find("input:eq(0)").attr("id").replaceAll("addServiceGroupName", "");
var addOprMngCode = $(this).find("input:eq(2)").attr("id").replaceAll("addOprMngCode", ""); var addOprMngCode = $(this).find("input:eq(2)").attr("id");
console.log('addOprMngCode-----'+addOprMngCode);
// var addServiceGroupDesc = $(this).find("input:eq(3)").attr("id").replaceAll("addServiceGroupDesc", ""); // var addServiceGroupDesc = $(this).find("input:eq(3)").attr("id").replaceAll("addServiceGroupDesc", "");
var addServiceGroupName = $('#' + $(this).find("input:eq(0)").attr("id")).val(); var addServiceGroupName = $('#' + $(this).find("input:eq(0)").attr("id")).val();
console.log('addServiceGroupName-----'+addServiceGroupName);
var addServiceGroupDesc = $('#' + $(this).find("input:eq(3)").attr("id")).val(); var addServiceGroupDesc = $('#' + $(this).find("input:eq(3)").attr("id")).val();
console.log('addServiceGroupDesc-----'+addServiceGroupDesc);
var addUseYn = $('#addUseYn' + addServiceGroup + ' option:selected').val(); var addUseYn = $('#addUseYn' + addServiceGroup + ' option:selected').val();
console.log('addUseYn-----'+addUseYn);
var authList = new Array(); var authList = new Array();
// console.log(JSON.stringify(authList)); // console.log(JSON.stringify(authList));
// console.log(JSON.stringify($(this))); // console.log(JSON.stringify($(this)));

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 관리자모니터링
</p>
</section>
</html>

@ -0,0 +1,27 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 엔티티
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 대화의도
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 대화의도테스트
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 대화의도이력
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 학습추진
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 기계학습
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 유의어전처리관리
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 실시간상담
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담가이드평가
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담가이드평가이력
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담가이드조회
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담가이드관리
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담이력수신함
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담이력전송함
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담이력조회
</p>
</section>
</html>

@ -16,12 +16,10 @@
document.location.href = "<c:url value='/adm/main/egovLoginUsr.do'/>"; document.location.href = "<c:url value='/adm/main/egovLoginUsr.do'/>";
} }
if (xhr.status == "401") { if (xhr.status == "401") {
document.location.href = "<c:url value='/adm/main/egovLoginUsr.do'/>"; document.location.href = "<c:url value='/adm/main/egovLoginUsr.do'/>";
} }
}); });
$(document).ready(function () { $(document).ready(function () {
getMainOpr(); getMainOpr();
getUv(); getUv();
@ -42,7 +40,6 @@
// console.log("로그아웃"); // console.log("로그아웃");
document.location.href = "<c:url value='/adm/main/egovLoginUsr.do'/>"; document.location.href = "<c:url value='/adm/main/egovLoginUsr.do'/>";
}); });
}); });
function getUv() { function getUv() {
@ -61,7 +58,6 @@
} }
}) })
return uv; return uv;
} }
function getMainOpr() { function getMainOpr() {
@ -107,7 +103,6 @@
}); });
}; };
function getContextPath() { function getContextPath() {
return sessionStorage.contextPath; return sessionStorage.contextPath;
} }
@ -119,6 +114,69 @@
return sPolicyList.indexOf(policyName) === -1 ? false : true; return sPolicyList.indexOf(policyName) === -1 ? false : true;
} }
function getToken() {
var cookies = document.cookie.split(';');
var token = '';
cookies.forEach(function(cookie) {
if(cookie.split('=')[0] == 'accessToken') {
token = cookie.split('=')[1];
}
});
//시간체크
var tmpVal = parseJwt(token);
var now = Date.now();
if (tmpVal.exp < parseInt(now.toString().substring(0, 10))) {
window.location.href = "<c:url value='/adm/signin/signin'/>";
//시간 지났으면 checkToken -> 서버사이드 토큰 갱신
checkToken();
cookies = document.cookie.split(';');
cookies.forEach(function(cookie) {
if(cookie.split('=')[0] == 'accessToken') {
token = cookie.split('=')[1];
}
});
}
return token;
}
function checkToken() {
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
datatype: "JSON",
url: "<c:url value='토큰 갱신 url'/>",
data: JSON.stringify(data)
}).complete(function (data) {
if (data.status == 200) {
//refreshToken 유효 시
document.cookie = 'accessToken=' + '새로운 accessToken';
}
if (data.status == 400) {
// 로그인 페이지로 이동
window.location.href = "<c:url value='/adm/signin/signin'/>";
}
});
}
//function accessToken 갱신요청
function parseJwt(token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
}
</script> </script>
<style> <style>
@ -162,7 +220,7 @@
<div class="user_name"> <div class="user_name">
<input type="hidden" id="naviseq"> <input type="hidden" id="naviseq">
<a class="user_name_btn" href="#"> <a class="user_name_btn" href="#">
<em class="user_name_btn">${LoginVO.userName}</em> 님 반갑습니다. <%-- <em class="user_name_btn">${LoginVO.userName}</em> 님 반갑습니다.--%>
</a> </a>
</div> </div>
<div class="user_info"> <div class="user_info">

@ -25,7 +25,7 @@
<header id="header"> <header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%> <%@ include file="/WEB-INF/jsp/adm/include/header.jsp"%>
</header> </header>
<c:import url="/adm/menu/getLnbMenu.do" /> <%-- <c:import url="/adm/menu/getLnbMenu.do" />--%>
<script type="text/javascript" src="<c:url value='/aajs/consulting.js' />"></script> <script type="text/javascript" src="<c:url value='/aajs/consulting.js' />"></script>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 일자별통계
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 시간대통계
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 접수리스트
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 아웃바운드모니터링
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 실시간모니터링
</p>
</section>
</html>

@ -17,6 +17,8 @@
}); });
$(document).ready(function () { $(document).ready(function () {
let tmp = window.localStorage.getItem("cinnmonToken");
console.log(tmp);
$('.btn_wrap').on("click", function () { $('.btn_wrap').on("click", function () {
// fncSend(); // fncSend();
fncCheck(); fncCheck();
@ -87,24 +89,39 @@
contentType: "application/json; charset=utf-8", contentType: "application/json; charset=utf-8",
datatype: "JSON", datatype: "JSON",
async: false, async: false,
url: "<c:url value='/adm/main/check'/>", url: "<c:url value='/adm/tokenLogin'/>",
data: JSON.stringify(json), data: JSON.stringify(json),
}) })
.complete(function (data) { .complete(function (data) {
if (data.status == 200) { if (data.status == 200) {
// window.localStorage.setItem("accessToken", data);
document.cookie = 'accessToken=' + data.responseText + '; path=/;';
document.signinInfoForm.action = "<c:url value='/adm/main/actionSecurityLogin.do'/>"; document.signinInfoForm.action = "<c:url value='/adm/main/actionSecurityLogin.do'/>";
document.signinInfoForm.submit(); document.signinInfoForm.submit();
} else if (data.status == 400) {
// alert("비밀번호 5회 실패로 계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요."); } else {
$.utils.warning("계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요."); // login 실패
} else if (data.status == 401) { // Todo: 실패에 코드 정의 및 처리 방식 고려 필요
// alert("비밀번호 변경후 90일이 지났습니다."); console.log("data.status: " + data.status);
$.utils.warning("비밀번호 변경후 90일이 지났습니다."); $.utils.warning("로그인 실패!! 에러 코드 처리 필요");
document.location.href = "<c:url value='/adm/main/changePwd'/>" ;
} else if (data.status == 404) {
// alert("로그인 정보가 올바르지 않습니다.");
$.utils.warning("로그인 정보가 올바르지 않습니다.");
} }
<%--if (data.status == 200) {--%>
<%-- document.signinInfoForm.action = "<c:url value='/adm/main/actionSecurityLogin.do'/>";--%>
<%-- document.signinInfoForm.submit();--%>
<%--} else if (data.status == 400) {--%>
<%-- // alert("비밀번호 5회 실패로 계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요.");--%>
<%-- $.utils.warning("계정이 잠겼습니다. 관리자에게 잠금해제 요청하세요.");--%>
<%--} else if (data.status == 401) {--%>
<%-- // alert("비밀번호 변경후 90일이 지났습니다.");--%>
<%-- $.utils.warning("비밀번호 변경후 90일이 지났습니다.");--%>
<%-- document.location.href = "<c:url value='/adm/main/changePwd'/>" ;--%>
<%--} else if (data.status == 404) {--%>
<%-- // alert("로그인 정보가 올바르지 않습니다.");--%>
<%-- $.utils.warning("로그인 정보가 올바르지 않습니다.");--%>
<%--}--%>
}) })
} }

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 상담이력조회
</p>
</section>
</html>

@ -0,0 +1,26 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>고객사관리</title>
<%@ include file="/WEB-INF/jsp/adm/include/topLinkTag.jsp" %>
</head>
<header id="header">
<%@ include file="/WEB-INF/jsp/adm/include/header.jsp" %>
</header>
<c:import url="/adm/menu/getLnbMenu.do"/>
<section id="Content" class="system_management">
<br>
<br>
<br>
<br>
<br>
<p> 영상상담
</p>
</section>
</html>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save