package com.takensoft.cms.mber.service;

import com.takensoft.cms.mber.vo.RefreshVO;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author  : takensoft
 * @since   : 2024.04.01
 *
 * RefreshToken 정보 관련 인터페이스
 */
public interface RefreshTokenService {

    /**
     * @author takensoft
     * @since 2024.04.04
     * refresh token 등록
     */
    public int saveRefreshToken(HttpServletRequest req, HttpServletResponse res, RefreshVO refresh, long expiredMs) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.04
     * refresh token 삭제 프로세스
     */
    public int deleteByRefresh(HttpServletRequest req, HttpServletResponse res) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.04
     * 토큰 재발급
     */
    public int tokenReissueProc(HttpServletRequest req, HttpServletResponse res) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.04
     * 토큰 삭제
     */
    public int delete(HttpServletRequest req, RefreshVO refreshVO) throws Exception;

    /**
     * @author takensoft
     * @since 2024.04.17
     * refresh token 등록 유무 확인
     */
    public boolean findByCheckRefresh(HttpServletRequest req, RefreshVO refreshVO) throws Exception;
}
