From f75d9c77de93c0f9144756b41e8b66584cd3a5a6 Mon Sep 17 00:00:00 2001 From: mraflif31 <mraflif31@yahoo.com> Date: Wed, 8 Nov 2017 21:35:27 +0700 Subject: [PATCH] Add REST for Register and modifying register.jsp --- .../src/java/validate/Register.java | 192 +++++++++++++++ WebApp/web/profile.jsp | 2 +- WebApp/web/register.jsp | 227 +++++++++++++----- 3 files changed, 357 insertions(+), 64 deletions(-) create mode 100644 IdentityService/src/java/validate/Register.java diff --git a/IdentityService/src/java/validate/Register.java b/IdentityService/src/java/validate/Register.java new file mode 100644 index 0000000..638cc8c --- /dev/null +++ b/IdentityService/src/java/validate/Register.java @@ -0,0 +1,192 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package validate; + +import java.io.IOException; +import java.io.PrintWriter; +import static java.lang.System.out; +import java.math.BigInteger; +import java.security.SecureRandom; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.json.simple.JSONObject; + +/** + * + */ +@WebServlet(name = "Register", urlPatterns = {"/Register"}) +public class Register extends HttpServlet { + + /** + * Processes requests for both HTTP <code>GET</code> and <code>POST</code> + * methods. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + * @throws java.sql.SQLException + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException { + response.setContentType("text/html;charset=UTF-8"); + try (PrintWriter out = response.getWriter()) { + String name = request.getParameter("name"); + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String password = request.getParameter("password"); + String phone = request.getParameter("phone"); + response.getWriter().write(request.getParameter("name")); + + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException ex) { + Logger.getLogger(SignIn.class.getName()).log(Level.SEVERE, null, ex); + } + try + ( Connection conn = DriverManager.getConnection( + "jdbc:mysql://localhost:3306/account?zeroDateTimeBehavior=convertToNull", + "root", + ""); + Statement stmt = conn.createStatement()) { + String sql; + sql = "SELECT * FROM account WHERE username = ? OR email = ?"; + PreparedStatement dbStatement = conn.prepareStatement(sql); + dbStatement.setString(1, username); + dbStatement.setString(2, email); + JSONObject json = new JSONObject(); + try ( /* Get every data returned by SQL query */ ResultSet rs = dbStatement.executeQuery()) { + if (rs.next()) { + json.put("res_code", -1); + } else { + + String sqlInsert = "INSERT INTO account(username,email,fullname,password,phone_no,profile_pict) VALUES(?,?,?,?,?,NULL)"; + PreparedStatement dbStatementInputToken = conn.prepareStatement(sqlInsert); + dbStatementInputToken.setString(1, username); + dbStatementInputToken.setString(2, email); + dbStatementInputToken.setString(3, name); + dbStatementInputToken.setString(4, password); + dbStatementInputToken.setString(5, phone); + + int rsInputToken = dbStatementInputToken.executeUpdate(); + + SecureRandom random = new SecureRandom(); + String token = new BigInteger(130, random).toString(32); + + String sqlCek; + boolean ulang = true; + PreparedStatement dbStatementCek; + + while (ulang) { + token = new BigInteger(130, random).toString(32); + sqlCek = "SELECT * FROM token WHERE token = ?"; + dbStatementCek = conn.prepareStatement(sqlCek); + dbStatementCek.setString(1, token); + ResultSet rsCek = dbStatementCek.executeQuery(); + if (rsCek.next()) { + ulang = true; + } else { + ulang = false; + } + } + + String sql2; + sql2 = "SELECT * FROM account WHERE username = ?"; + + PreparedStatement stateC; + stateC = conn.prepareStatement(sql2); + stateC.setString(1, username); + ResultSet rs2 = stateC.executeQuery(); + + Date dNow = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd"); + SimpleDateFormat timeFormat = new SimpleDateFormat ("HH:mm:ss"); + String time_expired = timeFormat.format(dNow); + String date_expired = dateFormat.format(dNow); + String sqlInputToken; + sqlInputToken = "INSERT INTO token(id_account,token,date_expired,time_expired) VALUES(?,?,?,?)"; + PreparedStatement dbStatementInputToken1 = conn.prepareStatement(sqlInputToken); + dbStatementInputToken1.setInt(1, rs2.getInt("id")); + dbStatementInputToken1.setString(2, token); + dbStatementInputToken1.setString(3, date_expired); + dbStatementInputToken1.setString(4, time_expired); + int rsInputToken1 = dbStatementInputToken1.executeUpdate(); + + json.put("res_code", 1); + json.put("id",rs2.getInt("id")); + json.put("fullname", name); + json.put("username", username); + json.put("email", email); + json.put("phone_no", phone); + json.put("token", token); + + } + + response.setContentType("application/json"); + response.getWriter().write(json.toString()); + } + stmt.close(); + conn.close(); + } + } catch (SQLException | IOException ex) { + + } + } + + // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> + /** + * Handles the HTTP <code>GET</code> method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Handles the HTTP <code>POST</code> method. + * + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Returns a short description of the servlet. + * + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// </editor-fold> + + +} diff --git a/WebApp/web/profile.jsp b/WebApp/web/profile.jsp index 17661cc..593cd21 100644 --- a/WebApp/web/profile.jsp +++ b/WebApp/web/profile.jsp @@ -35,7 +35,7 @@ <div class="container"> <!-- navbar --> <div class="navbar"> - <img src="assets/image/yesbos.png" class="logo"> + <img src="../../data/img/yesbos.png" class="logo"> <div class="logout"> <p style="margin-bottom: 2px;">Hi, <strong><!--?php echo $username ?--></strong> !</p> <a href="index.jsp">Logout</a> diff --git a/WebApp/web/register.jsp b/WebApp/web/register.jsp index 9021a63..e71dd92 100644 --- a/WebApp/web/register.jsp +++ b/WebApp/web/register.jsp @@ -5,73 +5,174 @@ --%> <%@page contentType="text/html" pageEncoding="UTF-8"%> +<%@page import="org.json.JSONException"%> +<%@page import="org.json.JSONObject"%> +<%@page import="org.json.JSONArray"%> +<%@page import="java.io.InputStreamReader"%> +<%@page import="java.io.BufferedReader"%> +<%@page import="java.io.DataOutputStream"%> +<%@page import="javax.xml.ws.ProtocolException"%> +<%@page import="java.io.IOException"%> +<%@page import="java.net.HttpURLConnection"%> +<%@page import="java.net.MalformedURLException"%> +<%@page import="java.net.URL"%> + + <% + + String name = request.getParameter("name"); + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String password = request.getParameter("password"); + String phone = request.getParameter("phone"); + + //String username = "bebas"; + //String password = "bebas"; + + String USER_AGENT = "Mozilla/5.0"; + + String url = "http://localhost:8001/IdentityService/Register"; + URL obj = null; + try { + obj = new URL(url); + } catch (MalformedURLException ex) { + } + HttpURLConnection con = null; + try { + con = (HttpURLConnection) obj.openConnection(); + } catch (IOException ex) { + + } + + try { + //add reuqest header + con.setRequestMethod("POST"); + } catch (ProtocolException ex) { + + } + con.setRequestProperty("User-Agent", USER_AGENT); + con.setRequestProperty("Accept-Language", "en-US,en;q=0.5"); + + String urlParameters = "name="+name+"&username="+username+"&email="+email+"&password="+password+"&phone=" + +phone; + + // Send post request + con.setDoOutput(true); + DataOutputStream wr = null; + + try { + wr = new DataOutputStream(con.getOutputStream()); + wr.writeBytes(urlParameters); + wr.flush(); + wr.close(); + } catch (IOException ex) { + } + + StringBuffer responsebuff = new StringBuffer(); + try { + int responseCode = con.getResponseCode(); + BufferedReader in = new BufferedReader( + new InputStreamReader(con.getInputStream())); + String inputLine; + + while ((inputLine = in.readLine()) != null) { + responsebuff.append(inputLine); + } + in.close(); + } catch (IOException ex) { + } + + JSONObject JSobjek = null; + try { + new JSONObject(responsebuff.toString()); + } catch (JSONException ex) { + + try { + new JSONArray(responsebuff.toString()); + } catch (JSONException ex1) { + + } + } + if (JSobjek!=null) { + //str = (String)JSobjek.get("id"); + int respC = (int)JSobjek.getInt("res_code"); + //if (!str.equals("null")) { + //respId = Integer.parseInt(str); + //} + if (respC != -1) { + Cookie cookie = new Cookie("token",(String)JSobjek.getString("token")); + response.addCookie(cookie); + response.sendRedirect("http://localhost:8000/WebApp/profile.jsp"); + } else { + response.sendRedirect("http://localhost:8000/WebApp/register.jsp"); + } + } + %> <!DOCTYPE html> <html> - <head> + <head> - <meta charset="utf-8"> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="description" content="Ngo-Jek - Ojek Online Clone Website"> - <meta name="author" content="Taufan Mahaputra, Robby Syaifullah, M Rafli"> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> + <meta name="viewport" content="width=device-width, initial-scale=1"> + <meta name="description" content="Ngo-Jek - Ojek Online Clone Website"> + <meta name="author" content="Taufan Mahaputra, Robby Syaifullah, M Rafli"> - <!-- Properties Title --> - <link rel="shortcut icon" href="" /> - <title>Ngo-Jek</title> + <!-- Properties Title --> + <link rel="shortcut icon" href="" /> + <title>Ngo-Jek</title> - - <!-- Custom CSS --> - <link href="style/main.css" rel="stylesheet" type='text/css'/> - <link href="style/register.css" rel="stylesheet" type='text/css'/> - <!-- Custom Fonts --> - <link href="assets/fonts/font-awesome.min.css" rel="stylesheet"> - <link href="https://fonts.googleapis.com/css?family=Oswald:400,500,600" rel="stylesheet"> - <link href="https://fonts.googleapis.com/css?family=Roboto:400,500" rel="stylesheet"> - - </head> - <body> - <div class="login" id="form-login"> - <h2 class="title">---SIGN UP---</h2> - <form id="register-form" <!--action="../src/register.jsp"--> method="post" onsubmit="return validateForm()"> - <div class="input-form"> - <div class="label"> - <p>Your Name</p> - <input type="text" name="name" placeholder="someone"> - </div> - <div class="label"> - <p>Username</p> - <input type="text" name="username" placeholder="username" id="username" onkeyup="validateUsername(this.value)"> - <img src="" class="icon-check" id="username-icon"> - </div> - <div class="label"> - <p>Email</p> - <input type="text" name="email" placeholder="someone@dummy.com" id="email" onkeyup="validateEmail(this.value)"> - <img src="" class="icon-check" id="email-icon"> - </div> - <div class="label"> - <p>Password</p> - <input type="password" name="password"> - </div> - <div class="label"> - <p>Confirm Password</p> - <input type="password" name="password-re"> - </div> - <div class="label"> - <p>Phone Number</p> - <input type="text" name="phone" onkeypress='return onlyNumber(event)'> + + <!-- Custom CSS --> + <link href="style/main.css" rel="stylesheet" type='text/css'/> + <link href="style/register.css" rel="stylesheet" type='text/css'/> + <!-- Custom Fonts --> + <link href="https://fonts.googleapis.com/css?family=Oswald:400,500,600" rel="stylesheet"> + <link href="https://fonts.googleapis.com/css?family=Roboto:400,500" rel="stylesheet"> + + </head> + <body> + <div class="login" id="form-login"> + <h2 class="title">---SIGN UP---</h2> + <form id="register-form" action="register.jsp" method="post"> + <div class="input-form"> + <div class="label"> + <p>Your Name</p> + <input type="text" name="name" placeholder="someone"> + </div> + <div class="label"> + <p>Username</p> + <input type="text" name="username" placeholder="username" id="username"> + <img src="" class="icon-check" id="username-icon"> + </div> + <div class="label"> + <p>Email</p> + <input type="text" name="email" placeholder="someone@dummy.com" id="email"> + <img src="" class="icon-check" id="email-icon"> + </div> + <div class="label"> + <p>Password</p> + <input type="password" name="password"> + </div> + <div class="label"> + <p>Confirm Password</p> + <input type="password" name="password-re"> + </div> + <div class="label"> + <p>Phone Number</p> + <input type="text" name="phone"> + </div> + </div> + <div class="checkbox"> + <input type="checkbox" name="driver" value="yes">Also sign me up as a driver! + </div> + <div class="submit-form"> + <p class="no-acc"><a href="index.jsp"> Already have a account?</a></p> + <input type="submit" value="REGISTER"> + </div> + </form> </div> - </div> - <div class="checkbox"> - <input type="checkbox" name="driver" value="yes">Also sign me up as a driver! - </div> - <div class="submit-form"> - <p class="no-acc"><a href="index.jsp"> Already have a account?</a></p> - <input type="submit" value="REGISTER"> - </div> - </form> - </div> - </body> - <!-- Script --> - <!--script src="assets/javascript/validateregister.js"></script> - <script src="assets/javascript/register.js"></script--> + </body> + <!-- Script --> + <!--script src="assets/javascript/validateregister.js"></script> + <script src="assets/javascript/register.js"></script--> </html> -- GitLab