//
//package com.lutao.cloud.auth.sso.handler;
//
//import cn.hutool.core.map.MapUtil;
//import cn.hutool.core.util.CharsetUtil;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.lutao.cloud.common.security.service.CloudCustomTokenServices;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.annotation.Lazy;
//import org.springframework.http.MediaType;
//import org.springframework.security.core.Authentication;
//import org.springframework.security.oauth2.common.OAuth2AccessToken;
//import org.springframework.security.oauth2.provider.*;
//import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.PrintWriter;
//
///**
//
// * SSO登录成功，返回oauth token
// */
//@Slf4j
//public class SSOLoginSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {
//	@Autowired
//	private ObjectMapper objectMapper;
//
//	@Autowired
//	private ClientDetailsService clientDetailsService;
//
//	@Lazy
//	@Autowired
//	private CloudCustomTokenServices tokenServices;
//
//	/**
//	 * Called when a user has been successfully authenticated. 调用spring security oauth API
//	 * 生成 oAuth2AccessToken
//	 * @param request the request which caused the successful authentication
//	 * @param response the response
//	 * @param authentication the <tt>Authentication</tt> object which was created during
//	 */
//	@Override
//	public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
//			Authentication authentication) {
//		try {
//			ClientDetails clientDetails = clientDetailsService.loadClientByClientId("casst");
//
//			TokenRequest tokenRequest = new TokenRequest(MapUtil.newHashMap(), "casst", clientDetails.getScope(), "sso");
//
//			OAuth2Request oAuth2Request = tokenRequest.createOAuth2Request(clientDetails);
//			OAuth2Authentication oAuth2Authentication = new OAuth2Authentication(oAuth2Request, authentication);
//			OAuth2AccessToken oAuth2AccessToken = tokenServices.createAccessToken(oAuth2Authentication);
//			log.info("获取token 成功：{}", oAuth2AccessToken.getValue());
//
//			response.setCharacterEncoding(CharsetUtil.UTF_8);
//			response.setContentType(MediaType.APPLICATION_JSON_VALUE);
//			PrintWriter printWriter = response.getWriter();
//			printWriter.append(objectMapper.writeValueAsString(oAuth2AccessToken));
//		} catch (Exception e) {
//			throw new RuntimeException(e);
//		}
//	}
//}
