Advertisement
ballchaichana

logincompany

Oct 8th, 2018
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.70 KB | None | 0 0
  1. package th.in.oneauthen.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.HttpResponse;
  17. import org.apache.http.client.ClientProtocolException;
  18. import org.apache.http.client.HttpClient;
  19. import org.apache.http.client.methods.HttpGet;
  20. import org.apache.http.client.methods.HttpPost;
  21. import org.apache.http.client.utils.URIBuilder;
  22. import org.apache.http.entity.StringEntity;
  23. import org.apache.http.impl.client.HttpClientBuilder;
  24. import org.bouncycastle.util.encoders.Base64;
  25.  
  26. import com.google.gson.JsonArray;
  27. import com.google.gson.JsonDeserializer;
  28. import com.google.gson.JsonObject;
  29. import com.google.gson.JsonParser;
  30.  
  31. import th.in.oneauthen.SigningTest;
  32. import th.in.oneauthen.object.DocumentDB;
  33. import th.in.oneauthen.object.UserUidDB;
  34. import th.in.oneauthen.object.DAO.DocumentDAO;
  35. import th.in.oneauthen.object.DAO.UserUidDAO;
  36. import th.in.oneauthen.util.CryptoUtil;
  37.  
  38. /**
  39.  * Servlet implementation class LoginServlet
  40.  */
  41. @WebServlet("/loginCompany")
  42. public class LoginCompanyServlet extends HttpServlet {
  43.     private static final long serialVersionUID = 1L;
  44.  
  45.     public static final String SESSION_PARAM_USER = "userSession";
  46.     public static final String SESSION_PARAM_ONEID_EMAIL = "authToken";
  47.     public static final String REQUEST_PARAM_USERNAME = "username";
  48.     // public static final String REQUEST_PARAM_PASSWORD = "password";
  49.  
  50.     public static final String DASHBOARD_URL = "dashboard.jsp";
  51.     public static final String DASHBOARD_SINGING = "dashboard.jsp?reqp=signing";
  52.     ////////////////////////////////////////////////////////////////////
  53.     public static String Email = "email_company";
  54.     public static String Name_company = "name_company";
  55.     public static String FRIST_Name_company = "frist_name_company";
  56.     public static final String USERNAME = "username";
  57.     public static final String PASSWORD = "password";
  58.     public static final String E_TAX = "tax";
  59.  
  60.     /**
  61.      * @see HttpServlet#HttpServlet()
  62.      */
  63.     public LoginCompanyServlet() {
  64.         super();
  65.         // TODO Auto-generated constructor stub
  66.     }
  67.  
  68.     /**
  69.      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
  70.      *      response)
  71.      */
  72.     protected void doGet(HttpServletRequest request, HttpServletResponse response)
  73.             throws ServletException, IOException {
  74.         // TODO Auto-generated method stub
  75.         doPost(request, response);
  76.     }
  77.  
  78.  
  79.     protected void doPost(HttpServletRequest request, HttpServletResponse response)
  80.             throws ServletException, IOException {
  81.         // TODO Auto-generated method stub
  82.        
  83.         String username = request.getParameter(USERNAME);
  84.         String password = request.getParameter(PASSWORD);
  85.         String taxNumber = request.getParameter(E_TAX);
  86.  
  87.         JsonObject json = new JsonObject();
  88.         json.addProperty("grant_type", "password");
  89.         json.addProperty("client_id", 39);
  90.         json.addProperty("client_secret", "0MfIjO8Pp54fGfo0re5NkW9iOv0GsMzb7u5PdpMi");
  91.         json.addProperty("username", username);
  92.         json.addProperty("password", password);
  93.  
  94.         BufferedReader br = null;
  95.         String output;
  96.         StringBuilder responseBuilder = null;
  97.  
  98.         HttpClient httpClient = HttpClientBuilder.create().build();
  99.         URIBuilder uriBuilder;
  100.         try {
  101.             uriBuilder = new URIBuilder("https://one.th/api/oauth/getpwd");
  102.             HttpPost postMethod = new HttpPost(uriBuilder.build());
  103.             StringEntity params = new StringEntity(json.toString());
  104.  
  105.             postMethod.addHeader("content-type", "application/json");
  106.             postMethod.setEntity(params);
  107.  
  108.             HttpResponse httpResponse = httpClient.execute(postMethod);
  109.             int responseCode = httpResponse.getStatusLine().getStatusCode();
  110.             if (responseCode == 201 || responseCode == 200) {
  111.                 br = new BufferedReader(new InputStreamReader((httpResponse.getEntity().getContent())));
  112.                 responseBuilder = new StringBuilder();
  113.                 while ((output = br.readLine()) != null) {
  114.                     responseBuilder.append(output);
  115.                 }
  116.                 System.out.println(httpResponse.getStatusLine().getStatusCode());
  117.  
  118.             } else {
  119.                 System.out.println("Failed : HTTP error code : " + httpResponse.getStatusLine().getStatusCode());
  120.                 LogoutServlet.doLogout(request, response,
  121.                         "username or password incorrect , Try your username or password again");
  122.             }
  123.             String GetToken = responseBuilder.toString();
  124.             JsonObject jsonObject = new JsonParser().parse(GetToken).getAsJsonObject();
  125.             String access_token = jsonObject.get("access_token").getAsString();
  126.             //  เรัยกใช้อีกฟังก์ชั่นเพื่อรับข้อมูลขอผู้ที่login
  127.             String oneIdAuthToken = SetAccessToken(access_token,taxNumber);
  128.         //  String oneIdAuthToken = SetAccessToken(access_token, taxNumber);
  129.            
  130.             JsonObject jsonObject_token = new JsonParser().parse(oneIdAuthToken).getAsJsonObject();
  131.             //  เเอดข้อมูล jsonArray to data
  132.             JsonArray data = jsonObject_token.getAsJsonArray("data");
  133.             for (int i = 0; i < 1; ++i) {
  134.                 JsonObject dataObj = (JsonObject) data.get(i);
  135.  
  136.                 Email = dataObj.get("thai_email").getAsString();
  137.                 Name_company = dataObj.get("id_card_num").getAsString();
  138.                 FRIST_Name_company = dataObj.get("first_name_eng").getAsString();
  139.             }
  140.             System.out.println(Email);
  141.             UserUidDAO userDao = new UserUidDAO();
  142.            
  143.             UserUidDB user = null;
  144.  
  145.             if( userDao.findUsername(Name_company) != null) {
  146.                 user = userDao.findUsername(Name_company);
  147.                
  148.             }
  149.             if (StringUtils.isEmpty(oneIdAuthToken) && user == null) {
  150.                 LogoutServlet.doLogout(request, response, "Login Failed!!");
  151.             } else if (!StringUtils.isEmpty(oneIdAuthToken) && user == null) {
  152.                 // oneIdAuthToken != null && user == null
  153.                 UserUidDB newUser = new UserUidDB();
  154.                 newUser.setUserName(Name_company);
  155.                 newUser.setLastLogin(new Date());
  156.                 newUser.setSamlTokenUid(oneIdAuthToken);
  157.                 newUser.setCompanyName(FRIST_Name_company);
  158.                 newUser.setType("business");
  159.                 try {
  160.                     userDao.save(newUser);
  161.                     System.out.println("Login success!!");
  162.                     request.getSession().setAttribute(SESSION_PARAM_USER, newUser);
  163.                     request.getSession().setAttribute(SESSION_PARAM_ONEID_EMAIL, Email);
  164.                     request.getRequestDispatcher(DASHBOARD_SINGING).forward(request, response);
  165.                 } catch (Exception e) {
  166.                     e.printStackTrace();
  167.                     LogoutServlet.doLogout(request, response, "System error !! Please contact system administrator!");
  168.                 }
  169.             } else if (!StringUtils.isEmpty(oneIdAuthToken) && userDao.findUsername(Name_company) != null) {
  170.                 System.out.println("Login success!!");
  171.         //integer A = user.getUserId();
  172.                 request.getSession().setAttribute(SESSION_PARAM_USER, user);
  173.                 request.getSession().setAttribute(SESSION_PARAM_ONEID_EMAIL, Email);
  174.                 request.getRequestDispatcher(DASHBOARD_SINGING).forward(request, response);
  175.                 System.out.println("DAO: " + user.getUserId());
  176.                
  177.                 // example query
  178. //              DocumentDAO hisDao = new DocumentDAO();
  179. //              if(! hisDao.findByUserUID(user).isEmpty()) {
  180. //                  for ( DocumentDB his : hisDao.findByUserUID(user)) {
  181. //                      System.out.println("DAO:USER = " + his.getCreator().getUserName().toString());
  182. //                     
  183. //                  }
  184. //             
  185. //              }
  186.                
  187.  
  188.             }
  189.            
  190.            
  191.  
  192.         } catch (URISyntaxException e1) {
  193.             System.out.println("can not connect to URL (https://one.th/api/oauth/getpwd) ");
  194.             e1.printStackTrace();
  195.             LogoutServlet.doLogout(request, response,
  196.                     "can not connect to URL (https://one.th/api/oauth/getpwd) ");
  197.         }
  198.  
  199.     }
  200.    
  201.     public String SetAccessToken(String token,String tax) throws URISyntaxException, ClientProtocolException, IOException {
  202.  
  203.         BufferedReader br = null;
  204.         String output;
  205.         StringBuilder responseBuilder = null;
  206.         HttpClient httpClient = HttpClientBuilder.create().build();
  207.         URIBuilder uriBuilder;
  208.  
  209.         uriBuilder = new URIBuilder("https://one.th/api/getBusinessAccount/"+tax);
  210.         HttpGet getMethod = new HttpGet(uriBuilder.build());
  211.         getMethod.addHeader("Authorization", "Bearer " + token);
  212.  
  213.         HttpResponse httpResponse = httpClient.execute(getMethod);
  214.         int responseCode = httpResponse.getStatusLine().getStatusCode();
  215.         if (responseCode == 201 || responseCode == 200) {
  216.             br = new BufferedReader(new InputStreamReader((httpResponse.getEntity().getContent())));
  217.             responseBuilder = new StringBuilder();
  218.             while ((output = br.readLine()) != null) {
  219.                 responseBuilder.append(output);
  220.             }
  221.  
  222.         } else {
  223.             System.out.println("Failed : HTTP error code : " + httpResponse.getStatusLine().getStatusCode());
  224.         }
  225.  
  226.         return responseBuilder.toString();
  227.  
  228.     }
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement