sso 대응 - MainController 로직 이용
This commit is contained in:
@@ -120,6 +120,30 @@ public class MainController implements InterceptorSkipController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SSO 로그인용 세션 설정 (SsoController에서 호출)
|
||||||
|
* 비밀번호 인증 없이 UserInfo만으로 로그인 처리
|
||||||
|
*/
|
||||||
|
public String setupSsoLoginSession(HttpServletRequest request, UserInfo userInfo) {
|
||||||
|
HttpSession session = request.getSession(true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
initializeLoginAndSetDashboardImage(session);
|
||||||
|
|
||||||
|
LoginVo dto = new LoginVo();
|
||||||
|
dto.setUserId(userInfo.getUserid());
|
||||||
|
|
||||||
|
session.setAttribute("userId", userInfo.getUserid());
|
||||||
|
session.setAttribute("dualLogin", "N");
|
||||||
|
SessionManager.forceRegisterUserSession(request, dto);
|
||||||
|
session.setAttribute(CommonConstants.LOGIN, dto);
|
||||||
|
|
||||||
|
return loadUserInfoAndSetupSession(request, session, dto, userInfo);
|
||||||
|
} catch (Exception e) {
|
||||||
|
return handleExceptionsAndRedirect(request, session, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 초기 설정 및 대시보드 이미지 설정
|
// 초기 설정 및 대시보드 이미지 설정
|
||||||
private void initializeLoginAndSetDashboardImage(HttpSession session) {
|
private void initializeLoginAndSetDashboardImage(HttpSession session) {
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,8 @@ import com.eactive.eai.rms.common.context.MonitoringContext;
|
|||||||
import com.eactive.eai.rms.common.datasource.DataSourceType;
|
import com.eactive.eai.rms.common.datasource.DataSourceType;
|
||||||
import com.eactive.eai.rms.common.datasource.DataSourceTypeManager;
|
import com.eactive.eai.rms.common.datasource.DataSourceTypeManager;
|
||||||
import com.eactive.eai.rms.common.interceptor.InterceptorSkipController;
|
import com.eactive.eai.rms.common.interceptor.InterceptorSkipController;
|
||||||
import com.eactive.eai.rms.common.login.LoginVo;
|
import com.eactive.eai.rms.common.login.MainController;
|
||||||
import com.eactive.eai.rms.common.login.SessionManager;
|
|
||||||
import com.eactive.eai.rms.common.util.CommonConstants;
|
import com.eactive.eai.rms.common.util.CommonConstants;
|
||||||
import com.eactive.eai.rms.common.util.IpUtil;
|
|
||||||
import com.eactive.eai.rms.data.entity.man.monitoringProperty.service.MonitoringPropertyService;
|
import com.eactive.eai.rms.data.entity.man.monitoringProperty.service.MonitoringPropertyService;
|
||||||
import com.eactive.eai.rms.data.entity.man.user.UserInfoService;
|
import com.eactive.eai.rms.data.entity.man.user.UserInfoService;
|
||||||
import com.eactive.eai.rms.data.entity.man.user.UserRole;
|
import com.eactive.eai.rms.data.entity.man.user.UserRole;
|
||||||
@@ -30,11 +28,8 @@ 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.time.LocalDateTime;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Controller
|
@Controller
|
||||||
@@ -47,12 +42,14 @@ public class SsoController implements InterceptorSkipController {
|
|||||||
private final UserRoleService userRoleService;
|
private final UserRoleService userRoleService;
|
||||||
private final UserServiceTypeService userServiceTypeService;
|
private final UserServiceTypeService userServiceTypeService;
|
||||||
private final MonitoringContext monitoringContext;
|
private final MonitoringContext monitoringContext;
|
||||||
|
private final MainController mainController;
|
||||||
|
|
||||||
public SsoController(MonitoringPropertyService monitoringPropertyService,
|
public SsoController(MonitoringPropertyService monitoringPropertyService,
|
||||||
UserInfoService userInfoService,
|
UserInfoService userInfoService,
|
||||||
UserRoleService userRoleService,
|
UserRoleService userRoleService,
|
||||||
UserServiceTypeService userServiceTypeService,
|
UserServiceTypeService userServiceTypeService,
|
||||||
MonitoringContext monitoringContext) {
|
MonitoringContext monitoringContext,
|
||||||
|
MainController mainController) {
|
||||||
KjbPropertyInjector kjbPropertyInjector = new KjbPropertyInjector(monitoringPropertyService, PROP_GORUP_ID);
|
KjbPropertyInjector kjbPropertyInjector = new KjbPropertyInjector(monitoringPropertyService, PROP_GORUP_ID);
|
||||||
prop = kjbPropertyInjector.inject(new KjbProperty());
|
prop = kjbPropertyInjector.inject(new KjbProperty());
|
||||||
this.ssoModule = KjbSsoModule.getInstance(prop);
|
this.ssoModule = KjbSsoModule.getInstance(prop);
|
||||||
@@ -60,6 +57,7 @@ public class SsoController implements InterceptorSkipController {
|
|||||||
this.userRoleService = userRoleService;
|
this.userRoleService = userRoleService;
|
||||||
this.userServiceTypeService = userServiceTypeService;
|
this.userServiceTypeService = userServiceTypeService;
|
||||||
this.monitoringContext = monitoringContext;
|
this.monitoringContext = monitoringContext;
|
||||||
|
this.mainController = mainController;
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequestMapping(value = "/sso/login.do")
|
@RequestMapping(value = "/sso/login.do")
|
||||||
@@ -138,11 +136,9 @@ public class SsoController implements InterceptorSkipController {
|
|||||||
// 사용자 생성 또는 업데이트
|
// 사용자 생성 또는 업데이트
|
||||||
UserInfo userInfo = findOrCreateUser(info, extendedInfo);
|
UserInfo userInfo = findOrCreateUser(info, extendedInfo);
|
||||||
|
|
||||||
// 로그인 세션 설정
|
// 로그인 세션 설정 (MainController 위임)
|
||||||
setupLoginSession(req, userInfo);
|
|
||||||
|
|
||||||
log.info("SSO 로그인 성공 - userId: {}", userId);
|
log.info("SSO 로그인 성공 - userId: {}", userId);
|
||||||
return "redirect:/main.do";
|
return mainController.setupSsoLoginSession(req, userInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -277,49 +273,6 @@ public class SsoController implements InterceptorSkipController {
|
|||||||
return userInfo;
|
return userInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 로그인 세션 설정
|
|
||||||
*/
|
|
||||||
private void setupLoginSession(HttpServletRequest request, UserInfo userInfo) {
|
|
||||||
HttpSession session = request.getSession(true);
|
|
||||||
|
|
||||||
LoginVo dto = new LoginVo();
|
|
||||||
dto.setUserId(userInfo.getUserid());
|
|
||||||
dto.setUserName(userInfo.getUsername());
|
|
||||||
dto.setDepartment(userInfo.getDvsnname());
|
|
||||||
|
|
||||||
// 역할 설정
|
|
||||||
List<UserRole> userRoles = userRoleService.findByUserId(userInfo.getUserid());
|
|
||||||
List<String> roles = userRoles.stream()
|
|
||||||
.map(r -> r.getId().getRoleId())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
dto.setRoleList(roles);
|
|
||||||
|
|
||||||
// 서비스타입 설정 (검증 없이 전체 허용)
|
|
||||||
dto.setUseServiceTypes(CommonConstants.USER_SERVICETYPE_NO_CHECK);
|
|
||||||
|
|
||||||
// 세션 등록
|
|
||||||
SessionManager.forceRegisterUserSession(request, dto);
|
|
||||||
session.setAttribute(CommonConstants.LOGIN, dto);
|
|
||||||
session.setAttribute("userId", userInfo.getUserid());
|
|
||||||
session.setAttribute("dualLogin", "N");
|
|
||||||
|
|
||||||
// 대시보드 타이틀 설정
|
|
||||||
String newTitle = monitoringContext.getStringProperty(
|
|
||||||
MonitoringContext.NEW_DASHBOARD_TITLE, "topLogo.gif");
|
|
||||||
session.setAttribute(MonitoringContext.NEW_DASHBOARD_TITLE, newTitle);
|
|
||||||
|
|
||||||
// 마지막 로그인 정보 업데이트
|
|
||||||
userInfo.setLastloginyms(LocalDateTime.now());
|
|
||||||
userInfo.setLastloginip(IpUtil.getClientIp(request));
|
|
||||||
userInfoService.save(userInfo);
|
|
||||||
|
|
||||||
// 세션에 마지막 로그인 정보 저장
|
|
||||||
session.setAttribute("LastLoginYms", userInfo.getLastloginyms()
|
|
||||||
.format(com.eactive.eai.data.converter.LocalDateTimeFormatters.FORMATTER_YYYYMMDDHHMMSS_14));
|
|
||||||
session.setAttribute("LastLoginIp", userInfo.getLastloginip());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 휴대폰번호에서 숫자만 추출
|
* 휴대폰번호에서 숫자만 추출
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user