
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.service;
import com.takensoft.cms.mber.vo.MberSocialAccountVO;
import com.takensoft.cms.mber.vo.MberVO;
import jakarta.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
/**
* @author takensoft
* @since 2025.05.29
* @modification
* since | author | description
* 2025.05.29 | takensoft | 최초 등록
*
* 통합 로그인 서비스 인터페이스
*/
public interface UnifiedLoginService {
/**
* 통합 로그인 인증
* @param providerType 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE)
* @param identifier 식별자 (로그인ID 또는 소셜ID)
* @param password 비밀번호 (시스템 로그인시만 필요)
* @return MberVO 인증된 사용자 정보
*/
MberVO authenticateUser(String providerType, String identifier, String password);
/**
* OAuth2 사용자 처리 (가입 또는 연동)
* @param email 이메일
* @param providerType 제공자 타입
* @param socialId 소셜 고유 ID
* @param name 이름
* @param request HTTP 요청 객체
* @return MberVO 처리된 사용자 정보
*/
MberVO processOAuth2User(String email, String providerType, String socialId, String name, HttpServletRequest request);
/**
* 계정 연동
* @param mbrId 회원 ID
* @param providerType 제공자 타입
* @param socialId 소셜 ID (시스템일 경우 null)
* @param loginId 로그인 ID (소셜일 경우 null)
* @param email 이메일
* @param name 이름
* @return boolean 연동 성공 여부
*/
boolean linkAccount(String mbrId, String providerType, String socialId, String loginId, String email, String name);
/**
* 계정 연동 해지
* @param mbrId 회원 ID
* @param providerType 제공자 타입
* @return boolean 해지 성공 여부
*/
boolean unlinkAccount(String mbrId, String providerType);
/**
* 연동된 계정 목록 조회
* @param mbrId 회원 ID
* @return List<MberSocialAccountVO> 연동된 계정 목록
*/
List<MberSocialAccountVO> getLinkedAccounts(String mbrId);
/**
* 메인 프로필 설정
* @param mbrId 회원 ID
* @param providerType 제공자 타입
* @return boolean 설정 성공 여부
*/
boolean setPrimaryProfile(String mbrId, String providerType);
/**
* 계정 통합 제안
* @param email 이메일
* @param newProviderType 새로운 제공자 타입
* @return HashMap<String, Object> 통합 제안 정보
*/
HashMap<String, Object> suggestAccountMerge(String email, String newProviderType);
}