/**
*
*/
package org.ihtsdo.otf.refset.security;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.ihtsdo.otf.refset.common.Meta;
import org.ihtsdo.otf.refset.common.Result;
import org.ihtsdo.otf.refset.error.ErrorInfo;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* @author Episteme Partners
*
*/
public class RefsetAuthenticationEntryPoint implements AuthenticationEntryPoint {
private String preAuthTokenKey;
private String userKey;
/**
* @param userKey the userKey to set
*/
public void setUserKey(String userKey) {
this.userKey = userKey;
}
/**
* @param preAuthTokenKey the preAuthTokenKey to set
*/
public void setPreAuthTokenKey(String preAuthTokenKey) {
this.preAuthTokenKey = preAuthTokenKey;
}
@Override
public void commence(HttpServletRequest req,
HttpServletResponse res, AuthenticationException e)
throws IOException, ServletException {
res.setContentType(MediaType.APPLICATION_JSON_VALUE);
Result<Map<String, Object>> result = new Result<Map<String, Object>>();
Meta meta = new Meta();
meta.setMessage(e.getMessage());
meta.setStatus(HttpStatus.UNAUTHORIZED);
ErrorInfo errorInfo = new ErrorInfo(e.getMessage(), Integer.toString(org.apache.commons.httpclient.HttpStatus.SC_UNAUTHORIZED));
meta.setErrorInfo(errorInfo);
result.setMeta(meta);
PrintWriter out = res.getWriter();
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_EMPTY);
out.print(mapper.writeValueAsString(result));
out.close();
}
}