From e729171168c1ba9190b899d8da2e72a2f40f9e9e Mon Sep 17 00:00:00 2001 From: marcins78 Date: Fri, 4 Jan 2013 17:31:48 +0000 Subject: [PATCH] Reworked login and register screen. --- .../gempukku/lotro/db/CachedPlayerDAO.java | 2 +- .../com/gempukku/lotro/db/DbPlayerDAO.java | 8 +- .../lotro/db/LoginInvalidException.java | 4 + .../java/com/gempukku/lotro/db/PlayerDAO.java | 2 +- .../gempukku/lotro/server/ServerResource.java | 56 +++---- .../gemp-lotr-web/src/main/webapp/index.html | 138 ++++++++++++------ .../main/webapp/js/gemp-015/communication.js | 2 + 7 files changed, 126 insertions(+), 86 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LoginInvalidException.java diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/CachedPlayerDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/CachedPlayerDAO.java index 1962d24b8..ad5da3c39 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/CachedPlayerDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/CachedPlayerDAO.java @@ -60,7 +60,7 @@ public class CachedPlayerDAO implements PlayerDAO, Cached { } @Override - public boolean registerUser(String login, String password, String remoteAddr) throws SQLException { + public boolean registerUser(String login, String password, String remoteAddr) throws SQLException, LoginInvalidException { boolean registered = _delegate.registerUser(login, password, remoteAddr); if (registered) _playerByName.remove(login); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java index 10f336c1a..134dc13e8 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java @@ -104,7 +104,7 @@ public class DbPlayerDAO implements PlayerDAO { } } - public synchronized boolean registerUser(String login, String password, String remoteAddr) throws SQLException { + public synchronized boolean registerUser(String login, String password, String remoteAddr) throws SQLException, LoginInvalidException { boolean result = validateLogin(login); if (!result) return false; @@ -127,13 +127,13 @@ public class DbPlayerDAO implements PlayerDAO { } } - private boolean validateLogin(String login) throws SQLException { + private boolean validateLogin(String login) throws SQLException, LoginInvalidException { if (login.length() < 2 || login.length() > 10) - return false; + throw new LoginInvalidException(); for (int i = 0; i < login.length(); i++) { char c = login.charAt(i); if (!validLoginChars.contains("" + c)) - return false; + throw new LoginInvalidException(); } String lowerCase = login.toLowerCase(); diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LoginInvalidException.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LoginInvalidException.java new file mode 100644 index 000000000..e79f081b6 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/LoginInvalidException.java @@ -0,0 +1,4 @@ +package com.gempukku.lotro.db; + +public class LoginInvalidException extends Exception { +} diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/PlayerDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/PlayerDAO.java index f38e2434a..b11f059ca 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/PlayerDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/PlayerDAO.java @@ -15,7 +15,7 @@ public interface PlayerDAO { public boolean updateLastReward(Player player, int previousReward, int currentReward) throws SQLException; - public boolean registerUser(String login, String password, String remoteAddr) throws SQLException; + public boolean registerUser(String login, String password, String remoteAddr) throws SQLException, LoginInvalidException; public void updateLastLoginIp(String login, String remoteAddr) throws SQLException; } diff --git a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ServerResource.java b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ServerResource.java index 912728690..c606f9276 100644 --- a/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ServerResource.java +++ b/gemp-lotr/gemp-lotr-web-server/src/main/java/com/gempukku/lotro/server/ServerResource.java @@ -1,6 +1,7 @@ package com.gempukku.lotro.server; import com.gempukku.lotro.chat.ChatServer; +import com.gempukku.lotro.db.LoginInvalidException; import com.gempukku.lotro.db.PlayerStatistic; import com.gempukku.lotro.db.vo.GameHistoryEntry; import com.gempukku.lotro.game.*; @@ -52,7 +53,7 @@ public class ServerResource extends AbstractResource { @Path("/login") @POST @Produces("text/html") - public String login( + public void login( @FormParam("login") String login, @FormParam("password") String password, @Context HttpServletRequest request) throws Exception { @@ -60,12 +61,11 @@ public class ServerResource extends AbstractResource { if (player != null) { if (player.getType().contains("u")) { logUser(request, login); - return ""; } else { - return "You were banned. If you think it was a mistake, please write an e-mail to marcins78@gmail.com"; + throw new WebApplicationException(Response.Status.FORBIDDEN); } } else { - return "Invalid login or password. Please try again.
" + getLoginHTML(); + throw new WebApplicationException(Response.Status.UNAUTHORIZED); } } @@ -79,30 +79,21 @@ public class ServerResource extends AbstractResource { @Path("/register") @POST @Produces("text/html") - public String register( + public void register( @FormParam("login") String login, @FormParam("password") String password, - @Context HttpServletRequest request) throws Exception { - if (_playerDao.registerUser(login, password, request.getRemoteAddr())) { - logUser(request, login); - return ""; - } else { - StringBuilder sb = new StringBuilder(); - sb.append("User with this name already exists or your login is invalid.
"); - sb.append("Login must be between 2-10 characters long, contain only
english letters, numbers or _ (underscore) and - (dash) characters.
"); - sb.append("Try to again."); - return sb.toString(); + @Context HttpServletRequest request) throws SQLException { + try { + if (_playerDao.registerUser(login, password, request.getRemoteAddr())) { + logUser(request, login); + } else { + throw new WebApplicationException(Response.Status.CONFLICT); + } + } catch (LoginInvalidException exp) { + throw new WebApplicationException(Response.Status.BAD_REQUEST); } } - private String getLoginHTML() { - StringBuilder sb = new StringBuilder(); - sb.append("Login:
"); - sb.append("Password:
"); - sb.append(""); - return sb.toString(); - } - @Path("/replay/{replayId}") @GET @Produces(MediaType.APPLICATION_XML) @@ -195,19 +186,12 @@ public class ServerResource extends AbstractResource { @QueryParam("participantId") String participantId, @Context HttpServletRequest request) throws ParserConfigurationException { StringBuilder sb = new StringBuilder(); - participantId = getUserNameIfLogged(request); - if (participantId != null) { - sb.append(""); - } else { - sb.append("You are not logged in, log in below or ."); - int day = 1000 * 60 * 60 * 24; - int week = 1000 * 60 * 60 * 24 * 7; - sb.append("
Tables count: ").append(_hallServer.getTablesCount()).append(", players in hall: ").append(_chatServer.getChatRoom("Game Hall").getUsersInRoom().size()) - .append(", games played in last 24 hours: ").append(_gameHistoryService.getGamesPlayedCount(System.currentTimeMillis() - day, day)) - .append(",
active players in last week: ").append(_gameHistoryService.getActivePlayersCount(System.currentTimeMillis() - week, week)) - .append("
"); - sb.append(getLoginHTML()); - } + + int day = 1000 * 60 * 60 * 24; + int week = 1000 * 60 * 60 * 24 * 7; + sb.append("Tables count: ").append(_hallServer.getTablesCount()).append(", players in hall: ").append(_chatServer.getChatRoom("Game Hall").getUsersInRoom().size()) + .append(", games played in last 24 hours: ").append(_gameHistoryService.getGamesPlayedCount(System.currentTimeMillis() - day, day)) + .append(",
active players in last week: ").append(_gameHistoryService.getActivePlayersCount(System.currentTimeMillis() - week, week)); return sb.toString(); } diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/index.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/index.html index 162649593..5bb0de46a 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/index.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/index.html @@ -22,7 +22,7 @@ response.setDateHeader ("Expires", -1); <%@ include file="js.inc" %> - +
-
+
+
+
+
+
diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-015/communication.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-015/communication.js index 35461d5de..df87b45ed 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-015/communication.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-015/communication.js @@ -615,6 +615,7 @@ var GempLotrCommunication = Class.extend({ type:"POST", url:this.url + "/login", cache:false, + async:false, data:{ login:login, password:password, @@ -643,6 +644,7 @@ var GempLotrCommunication = Class.extend({ type:"POST", url:"/gemp-lotr/includes/registrationForm.html", cache:false, + async:false, data:{ participantId:getUrlParam("participantId")}, success:this.deliveryCheck(callback),