package com.rg.login.controller;

import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;

import com.rg.util.CookieHandle;
import com.rg.util.RedisService3;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import java.io.IOException;

public class CustomLogoutSuccessHandler implements LogoutSuccessHandler {

	private final RedisService3 redisService;

	public CustomLogoutSuccessHandler(RedisService3 redisService) {
		this.redisService = redisService;
	}
	
	@Override
	public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
			throws IOException, ServletException {
		
		HttpSession session = request.getSession(false);
		
		String loginId = CookieHandle.getCookie(request, "login_id");
		String sessionId = CookieHandle.getCookie(request, "session_id");
		
		redisService.processRedisLogout("LOGIN||SESSION||" + loginId + "||" + sessionId);
		
		if (session != null) {
			session.invalidate();
		}
		response.setStatus(HttpServletResponse.SC_OK);
		response.sendRedirect("/");
	}
}
