All Downloads are FREE. Search and download functionalities are using the official Maven repository.

br.com.jhonsapp.bootstrap.authentication.security.token.RefreshTokenPostProcessor Maven / Gradle / Ivy

package br.com.jhonsapp.bootstrap.authentication.security.token;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.http.server.ServletServerHttpRequest;
import org.springframework.http.server.ServletServerHttpResponse;
import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken;
import org.springframework.security.oauth2.common.OAuth2AccessToken;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;

import br.com.jhonsapp.bootstrap.util.RefreshTokenUtil;


/**
 * Usado para retirar o refreshToken do corpo da resposta 
 * e colocar em um cookie, adicionando o mesmo a resposta novamente.
 * */
@ControllerAdvice
public class RefreshTokenPostProcessor implements ResponseBodyAdvice {
	
	@Autowired
	private RefreshTokenUtil refreshTokenUtil;

	
	@Override
	public boolean supports(MethodParameter returnType, Class> converterType) {
		return returnType.getMethod().getName().equals("postAccessToken");
	}

	@Override
	public OAuth2AccessToken beforeBodyWrite(OAuth2AccessToken body, MethodParameter returnType,
			MediaType selectedContentType, Class> selectedConverterType,
			ServerHttpRequest request, ServerHttpResponse response) {
		
		HttpServletRequest req = ((ServletServerHttpRequest) request).getServletRequest();
		HttpServletResponse resp = ((ServletServerHttpResponse) response).getServletResponse();
		
		DefaultOAuth2AccessToken token = (DefaultOAuth2AccessToken) body;
		
		String refreshToken = body.getRefreshToken().getValue();
		
		refreshTokenUtil.createRefreshTokenCookie(refreshToken, req, resp);
		refreshTokenUtil.removeRefreshTokenBody(token);
		
		return body;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy