
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
package com.takensoft.cms.loginPolicy.web;
import com.takensoft.cms.loginPolicy.service.LoginModeService;
import com.takensoft.cms.loginPolicy.service.LoginPolicyService;
import com.takensoft.cms.loginPolicy.vo.LoginModeVO;
import com.takensoft.cms.loginPolicy.vo.LoginPolicyVO;
import com.takensoft.cms.token.service.RefreshTokenService;
import com.takensoft.common.message.MessageCode;
import com.takensoft.common.util.JWTUtil;
import com.takensoft.common.util.ResponseUtil;
import com.takensoft.common.util.SessionUtil;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
/**
* @author 김혜민
* @since 2025.03.22
* @modification
* since | author | description
* 2025.03.22 | 김혜민 | 최초 등록
*
* 로그인정책 관련 컨트롤러
*/
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping(value = "/admin/loginPolicy")
public class LoginPolicyController {
private final LoginPolicyService loginPolicyService;
private final LoginModeService loginModeService;
private final ResponseUtil resUtil;
private final JWTUtil jwtUtil;
private final SessionUtil sessionUtil;
private final RedisTemplate<String, String> redisTemplate;
private final RefreshTokenService refreshTokenService;
/**
*
* @return ResponseEntity - 중복로그인 조회 결과를 포함하는 응답
*
* 중복로그인 조회
*/
@PostMapping(value ="/getLoginPolicy.json")
public ResponseEntity<?> getLoginPolicy() {
Boolean result = loginPolicyService.getPolicy();
return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
}
/**
* @param loginPolicyVO - 중복로그인 정보
* @return ResponseEntity - 중복로그인 결과를 포함하는 응답
*
* 중복로그인 수정
*/
@PostMapping(value ="/saveLoginPolicy.json")
public ResponseEntity<?> saveLoginPolicy(@RequestBody LoginPolicyVO loginPolicyVO, HttpServletRequest request) {
try {
String token = request.getHeader("Authorization");
String mbrId = (String) jwtUtil.getClaim(token, "mbrId");
if (mbrId == null || mbrId.isBlank()) {
return resUtil.errorRes(MessageCode.COMMON_BAD_REQUEST);
}
loginPolicyVO.setRgtr(mbrId);
int result = loginPolicyService.insertPolicy(loginPolicyVO);
if (result > 0) {
return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
} else {
return resUtil.errorRes(MessageCode.COMMON_INSERT_FAIL); // 저장 실패
}
} catch (DuplicateKeyException e) {
return resUtil.errorRes(MessageCode.COMMON_DUPLICATION_DATA); // 중복 저장
} catch (Exception e) {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR); // 기타 예외
}
}
/**
*
* @return ResponseEntity - 로그인 방식 조회 결과를 포함하는 응답
*
* 로그인 방식 조회
*/
@PostMapping(value ="/getLoginMode.json")
public Object getLoginMode() {
String loginMode = loginModeService.getLoginMode();
return resUtil.successRes(loginMode, MessageCode.COMMON_SUCCESS);
}
/**
*
* @return ResponseEntity - 로그인 방식 저장 결과를 포함하는 응답
*
* 로그인 방식 저장
*/
@PostMapping(value ="/saveLoginMode.json")
public ResponseEntity<?> saveLoginMode(@RequestBody LoginModeVO loginModeVO, HttpServletRequest request) {
try {
String token = request.getHeader("Authorization");
String mbrId = (String) jwtUtil.getClaim(token, "mbrId");
if (mbrId == null || mbrId.isBlank()) {
return resUtil.errorRes(MessageCode.COMMON_BAD_REQUEST);
}
loginModeVO.setRgtr(mbrId);
int result = loginModeService.insertLoginMode(loginModeVO);
/* if (loginModeVO.getLgnMode().equals("J")) {
// JWT 전체 로그아웃
Set<String> keys = redisTemplate.keys("jwt:*");
if (keys != null && !keys.isEmpty()) redisTemplate.delete(keys);
refreshTokenService.deleteAll();
} else {
// 세션 전체 로그아웃
sessionUtil.invalidateAllSessions();
}*/
if (result > 0) {
return resUtil.successRes(result, MessageCode.COMMON_SUCCESS);
} else {
return resUtil.errorRes(MessageCode.COMMON_INSERT_FAIL); // 저장 실패
}
} catch (DuplicateKeyException e) {
return resUtil.errorRes(MessageCode.COMMON_DUPLICATION_DATA); // 중복 저장
} catch (Exception e) {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR); // 기타 예외
}
}
}