package org.wso2.iot.firealarm.access;
import org.wso2.iot.firealarm.access.api.AccessTokenClient;
import org.wso2.iot.firealarm.access.api.AccessTokenException;
import org.wso2.iot.firealarm.access.api.AccessTokenInfo;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.UUID;
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
//UserAgent + ClientIP + '
String userAgent=request.getHeader("User-Agent");
if(userAgent==null){
userAgent=username;
}
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
String salt=UUID.randomUUID().toString();
String instanceId=userAgent+ipAddress+salt;
AccessTokenClient client = new AccessTokenClient();
AccessTokenInfo accessTokenInfo;
try {
accessTokenInfo=client.getAccessToken(username,password,instanceId);
if(accessTokenInfo!=null) {
request.getSession(true).setAttribute("token", accessTokenInfo.getAccess_token());
request.getSession(true).setAttribute("username", username);
request.getSession(true).removeAttribute("password");
request.getRequestDispatcher("control.jsp").forward(request, response);
}else{
request.setAttribute("errMsg","Invalid Credential");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
} catch (AccessTokenException e) {
request.setAttribute("errMsg","Invalid Credential");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.sendRedirect("index.jsp");
}
}