
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 lgnOffrType 제공자 타입 (SYSTEM, KAKAO, NAVER, GOOGLE)
* @param identifier 식별자 (로그인ID 또는 소셜ID)
* @param password 비밀번호 (시스템 로그인시만 필요)
* @return MberVO 인증된 사용자 정보
*/
MberVO authenticateUser(String lgnOffrType, String identifier, String password);
/**
* OAuth2 사용자 처리 (가입 또는 연동)
* @param email 이메일
* @param lgnOffrType 제공자 타입
* @param snsLgnId 소셜 고유 ID
* @param name 이름
* @param request HTTP 요청 객체
* @return MberVO 처리된 사용자 정보
*/
MberVO processOAuth2User(String email, String lgnOffrType, String snsLgnId, String name, HttpServletRequest request);
/**
* 계정 연동
* @param mbrId 회원 ID
* @param lgnOffrType 제공자 타입
* @param snsLgnId 소셜 ID (시스템일 경우 null)
* @param lgnId 로그인 ID (소셜일 경우 null)
* @param email 이메일
* @param name 이름
* @return boolean 연동 성공 여부
*/
boolean linkAccount(String mbrId, String lgnOffrType, String snsLgnId, String lgnId, String email, String name);
/**
* 계정 연동 해지
* @param mbrId 회원 ID
* @param lgnOffrType 제공자 타입
* @return boolean 해지 성공 여부
*/
boolean unlinkAccount(String mbrId, String lgnOffrType);
/**
* 연동된 계정 목록 조회
* @param mbrId 회원 ID
* @return List<MberSocialAccountVO> 연동된 계정 목록
*/
List<MberSocialAccountVO> getLinkedAccounts(String mbrId);
/**
* 메인 프로필 설정
* @param mbrId 회원 ID
* @param lgnOffrType 제공자 타입
* @return boolean 설정 성공 여부
*/
boolean setPrimaryProfile(String mbrId, String lgnOffrType);
/**
* 계정 통합 제안
* @param email 이메일
* @param newProviderType 새로운 제공자 타입
* @return HashMap<String, Object> 통합 제안 정보
*/
HashMap<String, Object> suggestAccountMerge(String email, String newProviderType);
/**
* 제공자명을 회원타입으로 변환
* @param provider 제공자명
* @return String 변환된 제공자 명
*/
String convertProviderToMbrType(String provider);
}