ballchaichana

login

Aug 27th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.04 KB | None | 0 0
  1. package th.in.oneauth.servlet;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.net.URISyntaxException;
  7. import java.util.Date;
  8.  
  9. import javax.servlet.ServletException;
  10. import javax.servlet.annotation.WebServlet;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14.  
  15. import org.apache.commons.lang3.StringUtils;
  16. import org.apache.http.HttpEntity;
  17. import org.apache.http.HttpResponse;
  18. import org.apache.http.client.ClientProtocolException;
  19. import org.apache.http.client.HttpClient;
  20. import org.apache.http.client.methods.HttpGet;
  21. import org.apache.http.client.methods.HttpPost;
  22. import org.apache.http.client.utils.URIBuilder;
  23. import org.apache.http.entity.mime.MultipartEntityBuilder;
  24. import org.apache.http.impl.client.HttpClientBuilder;
  25.  
  26. import com.google.gson.JsonDeserializer;
  27. import com.google.gson.JsonObject;
  28. import com.google.gson.JsonParser;
  29.  
  30. import th.in.oneauthen.object.DocumentDB;
  31. import th.in.oneauthen.object.UserUidDB;
  32. import th.in.oneauthen.object.DAO.DocumentDAO;
  33. import th.in.oneauthen.object.DAO.UserUidDAO;
  34.  
  35. /**
  36.  * Servlet implementation class LoginServlet
  37.  */
  38. @WebServlet("/login")
  39. public class LoginServlet extends HttpServlet {
  40.     private static final long serialVersionUID = 1L;
  41.  
  42.     public static final String SESSION_PARAM_USER = "userSession";
  43.     public static final String SESSION_PARAM_ONEID_AUTH = "authToken";
  44.    
  45.     public static final String REQUEST_PARAM_USERNAME = "username";
  46.     public static final String REQUEST_PARAM_PASSWORD = "password";
  47.  
  48.     public static final String DASHBOARD_URL = "dashboard.jsp";
  49.     public static final String DASHBOARD_SINGING = "dashboard.jsp?reqp=signing";
  50.  
  51.     /**
  52.      * @see HttpServlet#HttpServlet()
  53.      */
  54.     public LoginServlet() {
  55.         super();
  56.         // TODO Auto-generated constructor stub
  57.     }
  58.  
  59.     /**
  60.      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
  61.      *      response)
  62.      */
  63.     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  64.             throws ServletException, IOException {
  65.         // TODO Auto-generated method stub
  66.         doPost(request, response);
  67.     }
  68.  
  69.     /**
  70.      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
  71.      *      response)
  72.      */
  73.     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  74.             throws ServletException, IOException {
  75.         // TODO Auto-generated method stub
  76.        
  77.        
  78.  
  79.         BufferedReader br = null;
  80.         String output;
  81.         StringBuilder responseBuilder = null;
  82.  
  83.         HttpClient httpClient = HttpClientBuilder.create().build();
  84.         URIBuilder uriBuilder;
  85.        
  86.         String username = request.getParameter(REQUEST_PARAM_USERNAME);
  87.         String password = request.getParameter(REQUEST_PARAM_PASSWORD);
  88.         try {
  89.             uriBuilder = new URIBuilder("https://one.th/api/oauth/getpwd");
  90.             HttpPost postMethod  = new HttpPost(uriBuilder.build());
  91.             HttpEntity entity = MultipartEntityBuilder .create()
  92.                     .addTextBody("grant_type", "password")
  93.                     .addTextBody("client_id", "39")
  94.                     .addTextBody("client_secret", "0MfIjO8Pp54fGfo0re5NkW9iOv0GsMzb7u5PdpMi")
  95.                     .addTextBody("username", username)
  96.                     .addTextBody("password", password)
  97.                     .addTextBody("ref_code", "3t7XRF").build();
  98.             postMethod.setEntity(entity);
  99.            
  100.             HttpResponse httpResponse = httpClient.execute(postMethod);
  101.             int responseCode = httpResponse.getStatusLine().getStatusCode();
  102.             if (responseCode == 201 || responseCode == 200) {
  103.                 br = new BufferedReader(new InputStreamReader((httpResponse.getEntity().getContent())));
  104.                 responseBuilder = new StringBuilder();
  105.                 while ((output = br.readLine()) != null) {
  106.                     responseBuilder.append(output);
  107.                 }
  108.  
  109.             } else {
  110.                 System.out.println("Failed : HTTP error code : " + httpResponse.getStatusLine().getStatusCode());
  111.             }
  112.            
  113.             System.out.println(responseBuilder.toString());
  114.             String GetToken = responseBuilder.toString();
  115.             JsonObject jsonObject = new JsonParser().parse(GetToken).getAsJsonObject();
  116.  
  117.             String access_token = jsonObject.get("access_token").getAsString();
  118.             System.out.println("access_token : "+access_token);
  119.            
  120.             String oneIdAuthToken = SetAccessToken(access_token);
  121.             JsonObject jsonObject_token = new JsonParser().parse(oneIdAuthToken).getAsJsonObject();
  122.            
  123.             String id_card_num = jsonObject_token.get("hash_id_card_num").getAsString();
  124.             System.out.println(id_card_num);
  125.  
  126.             String id = jsonObject_token.get("id").getAsString();
  127.             String email = jsonObject_token.get("thai_email").getAsString();
  128.             System.out.println(id);
  129.             System.out.println(email);
  130.            
  131.             //////////////////////////////////////////////////////////////////////
  132.             UserUidDAO userDao = new UserUidDAO();
  133.            
  134.             UserUidDB user = null;
  135.  
  136.             if( userDao.findUsername(username) != null) {
  137.                 user = userDao.findUsername(username);
  138.             }
  139.             System.out.println("DAO: " + user);
  140.             System.out.println("oneIdAuth: " + !(StringUtils.isEmpty(oneIdAuthToken)));
  141.  
  142.             if (StringUtils.isEmpty(oneIdAuthToken) && user == null) {
  143.                 LogoutServlet.doLogout(request, response, "Login Failed!!");
  144.             } else if (!StringUtils.isEmpty(oneIdAuthToken) && user == null) {
  145.                 // oneIdAuthToken != null && user == null
  146.                 UserUidDB newUser = new UserUidDB();
  147.                 newUser.setUserName(username);
  148.                 newUser.setLastLogin(new Date());
  149.                 newUser.setSamlTokenUid(oneIdAuthToken);
  150.                 newUser.setIdCardUid(id_card_num);
  151.                 // newUser.setUserPwd(password);
  152.                 try {
  153.                     userDao.save(newUser);
  154.                     System.out.println("Login success!!");
  155.                     request.getSession().setAttribute(SESSION_PARAM_USER, newUser);
  156.                     request.getSession().setAttribute(SESSION_PARAM_ONEID_AUTH, email);
  157.                     request.getRequestDispatcher(DASHBOARD_SINGING).forward(request, response);
  158.                 } catch (Exception e) {
  159.                     e.printStackTrace();
  160.                     LogoutServlet.doLogout(request, response, "System error !! Please contact system administrator!");
  161.                 }
  162.  
  163.                 //
  164.             } else if (!StringUtils.isEmpty(oneIdAuthToken) && userDao.findUsername(username) != null) {
  165.                 System.out.println("Login success!!");
  166.         //int   A=  user.getUserId();
  167.                 request.getSession().setAttribute(SESSION_PARAM_USER, user);
  168.                 request.getSession().setAttribute(SESSION_PARAM_ONEID_AUTH, email);
  169.                 request.getRequestDispatcher(DASHBOARD_SINGING).forward(request, response);
  170.                 System.out.println("DAO: " + user.getUserId());
  171.                 SigningTest.doTest(request, response, "System error !! Please contact system administrator!");
  172.                
  173.                 DocumentDAO hisDao = new DocumentDAO();
  174.                 if( hisDao.findByUserUID(user) != null) {
  175.                     for ( DocumentDB his : hisDao.findByUserUID(user)) {
  176.                         System.out.println("DAO:USER = " + his.getCreator().getUserName().toString());
  177.                     }
  178.                
  179.                 }
  180.             }
  181.  
  182.             else
  183.                 LogoutServlet.doLogout(request, response, "Login Failed!!");
  184.            
  185.                        
  186.         } catch (URISyntaxException e1) {
  187.             System.out.println("can not connect to URL (https://one.th/api/oauth/getpwd) ");
  188.             e1.printStackTrace();
  189.         }
  190.  
  191.        
  192.  
  193.  
  194.     }
  195.    
  196.     public  String SetAccessToken(String token) throws URISyntaxException, ClientProtocolException, IOException {
  197.        
  198.         BufferedReader br = null;
  199.         String output;
  200.         StringBuilder responseBuilder = null;
  201.         HttpClient httpClient = HttpClientBuilder.create().build();
  202.         URIBuilder uriBuilder;
  203.        
  204.         uriBuilder = new URIBuilder("https://one.th/api/account");
  205.         HttpGet getMethod  = new HttpGet(uriBuilder.build());
  206.         getMethod.addHeader("Authorization","Bearer "+token);
  207.        
  208.         HttpResponse httpResponse = httpClient.execute(getMethod);
  209.         int responseCode = httpResponse.getStatusLine().getStatusCode();
  210.         if (responseCode == 201 || responseCode == 200) {
  211.             br = new BufferedReader(new InputStreamReader((httpResponse.getEntity().getContent())));
  212.             responseBuilder = new StringBuilder();
  213.             while ((output = br.readLine()) != null) {
  214.                 responseBuilder.append(output);
  215.             }
  216.  
  217.         } else {
  218.             System.out.println("Failed : HTTP error code : " + httpResponse.getStatusLine().getStatusCode());
  219.         }
  220.         //System.out.println(responseBuilder.toString());
  221.        
  222.         return responseBuilder.toString();
  223.        
  224.     }
  225.    
  226. }
Add Comment
Please, Sign In to add comment