
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.common.message.MessageCode;
import com.takensoft.common.util.JWTUtil;
import com.takensoft.common.util.ResponseUtil;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @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;
/**
*
* @return ResponseEntity - 중복로그인 조회 결과를 포함하는 응답
*
* 중복로그인 조회
*/
@GetMapping("/getLoginPolicy.json")
public ResponseEntity<?> getLoginPolicy() {
Boolean isAllowed = loginPolicyService.getPolicy();
return resUtil.successRes(isAllowed, MessageCode.COMMON_SUCCESS);
}
/**
* @param params - 중복로그인 정보
* @return ResponseEntity - 중복로그인 결과를 포함하는 응답
*
* 중복로그인 수정
*/
@PostMapping("/saveLoginPolicy.json")
public ResponseEntity<?> saveLoginPolicy(@RequestBody Map<String, Object> params, HttpServletRequest request) {
try {
boolean allow = (Boolean) params.get("allowMultipleLogin");
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 loginPolicyVO = new LoginPolicyVO();
loginPolicyVO.setAllowMultipleLogin(allow);
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 - 로그인 방식 조회 결과를 포함하는 응답
*
* 로그인 방식 조회
*/
@GetMapping("/getLoginMode.json")
public Object getLoginMode() {
String loginMode = loginModeService.getLoginMode();
return resUtil.successRes(loginMode, MessageCode.COMMON_SUCCESS);
}
/**
*
* @return ResponseEntity - 로그인 방식 저장 결과를 포함하는 응답
*
* 로그인 방식 저장
*/
@PostMapping("/saveLoginMode.json")
public ResponseEntity<?> saveLoginMode(@RequestBody Map<String, Object> params, HttpServletRequest request) {
try {
String lgnMode = params.get("lgnMode").toString();
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 loginModeVO = new LoginModeVO();
loginModeVO.setLgnMode(lgnMode);
loginModeVO.setRgtrId(mbrId);
int result = loginModeService.insertLoginMode(loginModeVO);
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); // 기타 예외
}
}
}