package com.monkeyk.os.oauth.authorize;
import com.monkeyk.os.domain.oauth.ClientDetails;
import com.monkeyk.os.web.WebUtils;
import com.monkeyk.os.oauth.OAuthAuthxRequest;
import com.monkeyk.os.oauth.validator.AbstractClientDetailsValidator;
import com.monkeyk.os.oauth.validator.CodeClientDetailsValidator;
import org.apache.oltu.oauth2.as.response.OAuthASResponse;
import org.apache.oltu.oauth2.common.exception.OAuthSystemException;
import org.apache.oltu.oauth2.common.message.OAuthResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 2015/6/25
* <p/>
* Handle response_type = 'code'
*
* @author Shengzhao Li
*/
public class CodeAuthorizeHandler extends AbstractAuthorizeHandler {
private static final Logger LOG = LoggerFactory.getLogger(CodeAuthorizeHandler.class);
public CodeAuthorizeHandler(OAuthAuthxRequest oauthRequest, HttpServletResponse response) {
super(oauthRequest, response);
}
@Override
protected AbstractClientDetailsValidator getValidator() {
return new CodeClientDetailsValidator(oauthRequest);
}
//response code
@Override
protected void handleResponse() throws OAuthSystemException, IOException {
final ClientDetails clientDetails = clientDetails();
final String authCode = oauthService.retrieveAuthCode(clientDetails);
final OAuthResponse oAuthResponse = OAuthASResponse
.authorizationResponse(oauthRequest.request(), HttpServletResponse.SC_OK)
.location(clientDetails.getRedirectUri())
.setCode(authCode)
.buildQueryMessage();
LOG.debug(" 'code' response: {}", oAuthResponse);
WebUtils.writeOAuthQueryResponse(response, oAuthResponse);
}
}