package go.kr.project.mypage.service;

import go.kr.project.system.user.model.SystemUserVO;

import javax.servlet.http.HttpServletRequest;

/**
 * packageName    : go.kr.project.mypage.service
 * fileName       : MypageService
 * author         : 시스템 관리자
 * date           : 2025-05-20
 * description    : 마이페이지 관련 서비스 인터페이스
 * ===========================================================
 * DATE              AUTHOR             NOTE
 * -----------------------------------------------------------
 * 2025-05-20        시스템 관리자       최초 생성
 */
public interface MypageService {

    /**
     * 현재 로그인한 사용자 정보 조회
     * @param request HTTP 요청 객체
     * @return 사용자 정보
     * @throws Exception 예외 발생 시
     */
    SystemUserVO getUserInfo(HttpServletRequest request);

    /**
     * 사용자 정보 수정
     * @param user 사용자 정보
     * @param request HTTP 요청 객체
     * @return 수정 성공 여부
     */
    boolean updateUserInfo(SystemUserVO user, HttpServletRequest request);

    /**
     * 비밀번호 확인
     * @param user 사용자 정보 (userId, currentPasswd 필요)
     * @return 비밀번호 일치 여부
     * @throws Exception 예외 발생 시
     */
    boolean checkPassword(SystemUserVO user) throws Exception;

    /**
     * 비밀번호 변경
     * @param user 사용자 정보 (userId, currentPasswd, newPasswd, confirmPasswd 필요)
     * @param request HTTP 요청 객체
     * @return 변경 성공 여부
     * @throws Exception 예외 발생 시
     */
    boolean updatePassword(SystemUserVO user, HttpServletRequest request);
}