
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.mber.web;
import com.takensoft.cms.mber.service.UnifiedLoginService;
import com.takensoft.cms.mber.vo.MberSocialAccountVO;
import com.takensoft.common.message.MessageCode;
import com.takensoft.common.service.VerificationService;
import com.takensoft.common.util.ResponseUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
/**
* @author takensoft
* @since 2025.05.29
* @modification
* since | author | description
* 2025.05.29 | takensoft | 최초 등록
*
* 통합 로그인 관련 컨트롤러
*/
@RestController
@RequiredArgsConstructor
@Slf4j
@RequestMapping(value = "/mbr/unified")
public class UnifiedLoginController {
private final UnifiedLoginService unifiedLoginService;
private final VerificationService verificationService;
private final ResponseUtil resUtil;
/**
* 연동된 계정 목록 조회
*/
@PostMapping("/linkedAccounts.json")
public ResponseEntity<?> getLinkedAccounts() {
try {
String currentUserId = verificationService.getCurrentUserId();
List<MberSocialAccountVO> linkedAccounts = unifiedLoginService.getLinkedAccounts(currentUserId);
return resUtil.successRes(linkedAccounts, MessageCode.COMMON_SUCCESS);
} catch (Exception e) {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
}
/**
* 계정 연동
*/
@PostMapping("/linkAccount.json")
public ResponseEntity<?> linkAccount(@RequestBody HashMap<String, String> params) {
try {
String currentUserId = verificationService.getCurrentUserId();
String lgnOffrType = params.get("lgnOffrType");
String snsLgnId = params.get("snsLgnId");
String lgnId = params.get("lgnId");
String email = params.get("email");
String name = params.get("name");
boolean success = unifiedLoginService.linkAccount(currentUserId, lgnOffrType, snsLgnId, lgnId, email, name);
if (success) {
return resUtil.successRes("계정 연동이 완료되었습니다.", MessageCode.COMMON_SUCCESS);
} else {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
} catch (Exception e) {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
}
/**
* 계정 연동 해지
*/
@PostMapping("/unlinkAccount.json")
public ResponseEntity<?> unlinkAccount(@RequestBody HashMap<String, String> params) {
try {
String currentUserId = verificationService.getCurrentUserId();
String lgnOffrType = params.get("lgnOffrType");
boolean success = unifiedLoginService.unlinkAccount(currentUserId, lgnOffrType);
if (success) {
return resUtil.successRes("계정 연동이 해지되었습니다.", MessageCode.COMMON_SUCCESS);
} else {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
} catch (Exception e) {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
}
/**
* 메인 프로필 설정
*/
@PostMapping("/setPrimaryProfile.json")
public ResponseEntity<?> setPrimaryProfile(@RequestBody HashMap<String, String> params) {
try {
String currentUserId = verificationService.getCurrentUserId();
String lgnOffrType = params.get("lgnOffrType");
boolean success = unifiedLoginService.setPrimaryProfile(currentUserId, lgnOffrType);
if (success) {
return resUtil.successRes("메인 프로필이 설정되었습니다.", MessageCode.COMMON_SUCCESS);
} else {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
} catch (Exception e) {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
}
/**
* 계정 통합 제안 조회
*/
@PostMapping("/suggestMerge.json")
public ResponseEntity<?> suggestAccountMerge(@RequestBody HashMap<String, String> params) {
try {
String email = params.get("email");
String newProviderType = params.get("lgnOffrType");
HashMap<String, Object> suggestion = unifiedLoginService.suggestAccountMerge(email, newProviderType);
return resUtil.successRes(suggestion, MessageCode.COMMON_SUCCESS);
} catch (Exception e) {
return resUtil.errorRes(MessageCode.COMMON_UNKNOWN_ERROR);
}
}
}