diff --git a/IdentityService/src/main/java/org/informatika/ojek/DAO.java b/IdentityService/src/main/java/org/informatika/ojek/DAO.java index 88feb5a2380c9847d521d524388949aaac958c0c..290f335fc89e1215976fe6e6841a1457a2c539b0 100644 --- a/IdentityService/src/main/java/org/informatika/ojek/DAO.java +++ b/IdentityService/src/main/java/org/informatika/ojek/DAO.java @@ -351,5 +351,30 @@ public class DAO { throw new SQLException("No row effected!"); } } + + public void registerUser(Account account, String password) throws SQLException { + String sql = "INSERT INTO account (`name`, username, email, password, phone, is_driver) " + + "VALUES (?,?,?,MD5(?),?,0)"; + + connect(); + + PreparedStatement statement = jdbcConnection.prepareStatement(sql); + statement.setString(1, account.getName()); + statement.setString(2, account.getUsername()); + statement.setString(3, account.getEmail()); + statement.setString(4, password); + statement.setString(5, account.getPhone()); + + int rowCount = statement.executeUpdate(); + + statement.close(); + disconnect(); + if (rowCount < 1) { + throw new SQLException("No row effected!"); + } + + disconnect(); + + } } diff --git a/IdentityService/src/main/java/org/informatika/ojek/Register.java b/IdentityService/src/main/java/org/informatika/ojek/Register.java index 717ab16e5947d436af811b54b22127929c52b691..1d848da76884ca064c9bece94ba39a6e0b0daa79 100644 --- a/IdentityService/src/main/java/org/informatika/ojek/Register.java +++ b/IdentityService/src/main/java/org/informatika/ojek/Register.java @@ -1,5 +1,7 @@ package org.informatika.ojek; +import com.google.gson.Gson; +import org.informatika.ojek.model.Account; import org.informatika.ojek.model.Response; import javax.servlet.ServletException; @@ -9,21 +11,55 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.sql.SQLException; @WebServlet(name = "Register", urlPatterns = "/register") public class Register extends HttpServlet { + private DAO DAO; + private Gson gson; + + public void init() { + String jdbcURL = getServletContext().getInitParameter("jdbcURL"); + String jdbcUsername = getServletContext().getInitParameter("jdbcUsername"); + String jdbcPassword = getServletContext().getInitParameter("jdbcPassword"); + + DAO = new DAO(jdbcURL, jdbcUsername, jdbcPassword); + gson = new Gson(); + } + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); Response data; response.setStatus(500); - String token = request.getParameter("token"); String name = request.getParameter("name"); - String username; - String email; - String password; - String phone; + String username = request.getParameter("username"); + String email = request.getParameter("email"); + String password = request.getParameter("password"); + String phone = request.getParameter("phone"); + + if (name == null || username == null || email == null || password == null || phone == null) { + data = new Response(Response.STATUS_ERROR, null, null, "Wrong parameter!"); + out.print(gson.toJson(data)); + return; + } + + Account account = new Account(name, username, email, password, phone, false); + + try { + DAO.registerUser(account, password); + } catch (SQLException e) { + e.printStackTrace(); + data = new Response(Response.STATUS_ERROR, null, null, e.getMessage()); + out.print(gson.toJson(data)); + return; + } + + data = new Response(Response.STATUS_SUCCESS, null, null, "User " + username + "registered!"); + out.print(gson.toJson(data)); + return; } } diff --git a/IdentityService/src/main/java/org/informatika/ojek/model/Account.java b/IdentityService/src/main/java/org/informatika/ojek/model/Account.java index 22d48197befdbb4cc9dbc021f3fc421a24f831d8..ad6c0167aa5d7cdaf5323687418cc0b87644fd32 100644 --- a/IdentityService/src/main/java/org/informatika/ojek/model/Account.java +++ b/IdentityService/src/main/java/org/informatika/ojek/model/Account.java @@ -13,6 +13,15 @@ public class Account { protected String photo; protected Boolean isDriver; + public Account(String name, String username, String email, String phone, String photo, Boolean isDriver) { + this.name = name; + this.username = username; + this.email = email; + this.phone = phone; + this.photo = photo; + this.isDriver = isDriver; + } + public Account(int id, String name, String username, String email, String phone, String photo, Boolean isDriver) { this.id = id; this.name = name; diff --git a/IdentityService/web/WEB-INF/web.xml b/IdentityService/web/WEB-INF/web.xml index 2a2157c3c3eb60ba82d08ddf63ec7c73cffb291e..63b894835088d2aa00b2525c08dd0e400068031b 100644 --- a/IdentityService/web/WEB-INF/web.xml +++ b/IdentityService/web/WEB-INF/web.xml @@ -16,6 +16,10 @@ <servlet-name>Validate</servlet-name> <servlet-class>org.informatika.ojek.Validate</servlet-class> </servlet> + <servlet> + <servlet-name>Register</servlet-name> + <servlet-class>org.informatika.ojek.Register</servlet-class> + </servlet> <servlet-mapping> <servlet-name>Auth</servlet-name> @@ -29,9 +33,13 @@ <servlet-name>Main</servlet-name> <url-pattern>/info</url-pattern> </servlet-mapping> + <servlet-mapping> + <servlet-name>Register</servlet-name> + <url-pattern>/register</url-pattern> + </servlet-mapping> <welcome-file-list> - <welcome-file>main</welcome-file> + <welcome-file>info</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list>