From fa92e7efd00a5c68096f7ce89973752105cdfda2 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Mon, 29 Aug 2022 01:41:48 -0500 Subject: [PATCH] Completed admin panel conversion for user management (bans) --- .../async/handler/AdminRequestHandler.java | 362 +++++++++--------- .../src/main/web/includes/admin.html | 36 +- .../main/web/includes/admin/generalAdmin.html | 10 +- .../main/web/includes/admin/userAdmin.html | 139 +++++++ .../src/main/web/js/gemp-022/communication.js | 71 ++++ .../src/main/web/js/gemp-022/manage.js | 153 ++++++++ 6 files changed, 552 insertions(+), 219 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/userAdmin.html create mode 100644 gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/manage.js diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java index 348dfc5db..09a746a75 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java @@ -118,7 +118,7 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur List similarPlayers = _playerDAO.findSimilarAccounts(login); if (similarPlayers == null) - throw new HttpProcessingException(404); + throw new HttpProcessingException(400); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); @@ -162,13 +162,13 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String login = getFormParameterSafely(postDecoder, "login"); + String login = getFormParameterSafely(postDecoder, "login"); - if (login==null) - throw new HttpProcessingException(404); + if (login==null) + throw new HttpProcessingException(400); - if (!_adminService.banUser(login)) - throw new HttpProcessingException(404); + if (!_adminService.banUser(login)) + throw new HttpProcessingException(404); responseWriter.writeHtmlResponse("OK"); } finally { @@ -181,13 +181,13 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - List logins = getFormParametersSafely(postDecoder, "login"); - if (logins == null) - throw new HttpProcessingException(404); + List logins = getFormParametersSafely(postDecoder, "login[]"); + if (logins == null) + throw new HttpProcessingException(400); - for (String login : logins) { - if (!_adminService.banUser(login)) - throw new HttpProcessingException(404); + for (String login : logins) { + if (!_adminService.banUser(login)) + throw new HttpProcessingException(404); } responseWriter.writeHtmlResponse("OK"); @@ -201,13 +201,13 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String login = getFormParameterSafely(postDecoder, "login"); - int duration = Integer.parseInt(getFormParameterSafely(postDecoder, "duration")); + String login = getFormParameterSafely(postDecoder, "login"); + int duration = Integer.parseInt(getFormParameterSafely(postDecoder, "duration")); - if (!_adminService.banUserTemp(login, duration)) - throw new HttpProcessingException(404); + if (!_adminService.banUserTemp(login, duration)) + throw new HttpProcessingException(404); - responseWriter.writeHtmlResponse("OK"); + responseWriter.writeHtmlResponse("OK"); } finally { postDecoder.destroy(); } @@ -218,12 +218,12 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String login = getFormParameterSafely(postDecoder, "login"); + String login = getFormParameterSafely(postDecoder, "login"); - if (!_adminService.unBanUser(login)) - throw new HttpProcessingException(404); + if (!_adminService.unBanUser(login)) + throw new HttpProcessingException(404); - responseWriter.writeHtmlResponse("OK"); + responseWriter.writeHtmlResponse("OK"); } finally { postDecoder.destroy(); } @@ -234,18 +234,18 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String reason = getFormParameterSafely(postDecoder, "reason"); - String product = getFormParameterSafely(postDecoder, "product"); - String collectionType = getFormParameterSafely(postDecoder, "collectionType"); + String reason = getFormParameterSafely(postDecoder, "reason"); + String product = getFormParameterSafely(postDecoder, "product"); + String collectionType = getFormParameterSafely(postDecoder, "collectionType"); - Collection productItems = getProductItems(product); + Collection productItems = getProductItems(product); - Map playersCollection = _collectionManager.getPlayersCollection(collectionType); + Map playersCollection = _collectionManager.getPlayersCollection(collectionType); - for (Map.Entry playerCollection : playersCollection.entrySet()) - _collectionManager.addItemsToPlayerCollection(true, reason, playerCollection.getKey(), createCollectionType(collectionType), productItems); + for (Map.Entry playerCollection : playersCollection.entrySet()) + _collectionManager.addItemsToPlayerCollection(true, reason, playerCollection.getKey(), createCollectionType(collectionType), productItems); - responseWriter.writeHtmlResponse("OK"); + responseWriter.writeHtmlResponse("OK"); } finally { postDecoder.destroy(); } @@ -313,33 +313,33 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String start = getFormParameterSafely(postDecoder, "start"); - String collectionType = getFormParameterSafely(postDecoder, "collectionType"); - String prizeMultiplier = getFormParameterSafely(postDecoder, "prizeMultiplier"); - List formats = getFormMultipleParametersSafely(postDecoder, "format"); - List serieDurations = getFormMultipleParametersSafely(postDecoder, "serieDuration"); - List maxMatches = getFormMultipleParametersSafely(postDecoder, "maxMatches"); - String name = getFormParameterSafely(postDecoder, "name"); - int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + String start = getFormParameterSafely(postDecoder, "start"); + String collectionType = getFormParameterSafely(postDecoder, "collectionType"); + String prizeMultiplier = getFormParameterSafely(postDecoder, "prizeMultiplier"); + List formats = getFormMultipleParametersSafely(postDecoder, "format"); + List serieDurations = getFormMultipleParametersSafely(postDecoder, "serieDuration"); + List maxMatches = getFormMultipleParametersSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); - String code = String.valueOf(System.currentTimeMillis()); + String code = String.valueOf(System.currentTimeMillis()); - StringBuilder sb = new StringBuilder(); - sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.size()); - for (int i = 0; i < formats.size(); i++) - sb.append("," + formats.get(i) + "," + serieDurations.get(i) + "," + maxMatches.get(i)); + StringBuilder sb = new StringBuilder(); + sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.size()); + for (int i = 0; i < formats.size(); i++) + sb.append("," + formats.get(i) + "," + serieDurations.get(i) + "," + maxMatches.get(i)); - String parameters = sb.toString(); - LeagueData leagueData = new NewConstructedLeagueData(_cardSets, _soloDraftDefinitions, parameters); - List series = leagueData.getSeries(); - int leagueStart = series.get(0).getStart(); - int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2); + String parameters = sb.toString(); + LeagueData leagueData = new NewConstructedLeagueData(_cardSets, _soloDraftDefinitions, parameters); + List series = leagueData.getSeries(); + int leagueStart = series.get(0).getStart(); + int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2); - _leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd); + _leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd); - _leagueService.clearCache(); + _leagueService.clearCache(); - responseWriter.writeHtmlResponse("OK"); + responseWriter.writeHtmlResponse("OK"); } finally { postDecoder.destroy(); } @@ -350,55 +350,55 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String start = getFormParameterSafely(postDecoder, "start"); - String collectionType = getFormParameterSafely(postDecoder, "collectionType"); - String prizeMultiplier = getFormParameterSafely(postDecoder, "prizeMultiplier"); - List formats = getFormMultipleParametersSafely(postDecoder, "format"); - List serieDurations = getFormMultipleParametersSafely(postDecoder, "serieDuration"); - List maxMatches = getFormMultipleParametersSafely(postDecoder, "maxMatches"); - String name = getFormParameterSafely(postDecoder, "name"); - int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + String start = getFormParameterSafely(postDecoder, "start"); + String collectionType = getFormParameterSafely(postDecoder, "collectionType"); + String prizeMultiplier = getFormParameterSafely(postDecoder, "prizeMultiplier"); + List formats = getFormMultipleParametersSafely(postDecoder, "format"); + List serieDurations = getFormMultipleParametersSafely(postDecoder, "serieDuration"); + List maxMatches = getFormMultipleParametersSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); - StringBuilder sb = new StringBuilder(); - sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.size()); - for (int i = 0; i < formats.size(); i++) - sb.append("," + formats.get(i) + "," + serieDurations.get(i) + "," + maxMatches.get(i)); + StringBuilder sb = new StringBuilder(); + sb.append(start + "," + collectionType + "," + prizeMultiplier + "," + formats.size()); + for (int i = 0; i < formats.size(); i++) + sb.append("," + formats.get(i) + "," + serieDurations.get(i) + "," + maxMatches.get(i)); - String parameters = sb.toString(); - LeagueData leagueData = new NewConstructedLeagueData(_cardSets, _soloDraftDefinitions, parameters); + String parameters = sb.toString(); + LeagueData leagueData = new NewConstructedLeagueData(_cardSets, _soloDraftDefinitions, parameters); - DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); - Document doc = documentBuilder.newDocument(); + Document doc = documentBuilder.newDocument(); - final List series = leagueData.getSeries(); + final List series = leagueData.getSeries(); - int end = series.get(series.size() - 1).getEnd(); + int end = series.get(series.size() - 1).getEnd(); - Element leagueElem = doc.createElement("league"); + Element leagueElem = doc.createElement("league"); - leagueElem.setAttribute("name", name); - leagueElem.setAttribute("cost", String.valueOf(cost)); - leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart())); - leagueElem.setAttribute("end", String.valueOf(end)); + leagueElem.setAttribute("name", name); + leagueElem.setAttribute("cost", String.valueOf(cost)); + leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart())); + leagueElem.setAttribute("end", String.valueOf(end)); - for (LeagueSerieData serie : series) { - Element serieElem = doc.createElement("serie"); - serieElem.setAttribute("type", serie.getName()); - serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches())); - serieElem.setAttribute("start", String.valueOf(serie.getStart())); - serieElem.setAttribute("end", String.valueOf(serie.getEnd())); - serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName()); - serieElem.setAttribute("collection", serie.getCollectionType().getFullName()); - serieElem.setAttribute("limited", String.valueOf(serie.isLimited())); + for (LeagueSerieData serie : series) { + Element serieElem = doc.createElement("serie"); + serieElem.setAttribute("type", serie.getName()); + serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches())); + serieElem.setAttribute("start", String.valueOf(serie.getStart())); + serieElem.setAttribute("end", String.valueOf(serie.getEnd())); + serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName()); + serieElem.setAttribute("collection", serie.getCollectionType().getFullName()); + serieElem.setAttribute("limited", String.valueOf(serie.isLimited())); - leagueElem.appendChild(serieElem); - } + leagueElem.appendChild(serieElem); + } - doc.appendChild(leagueElem); + doc.appendChild(leagueElem); - responseWriter.writeXmlResponse(doc); + responseWriter.writeXmlResponse(doc); } finally { postDecoder.destroy(); } @@ -409,26 +409,26 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String format = getFormParameterSafely(postDecoder, "format"); - String start = getFormParameterSafely(postDecoder, "start"); - String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); - String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); - String name = getFormParameterSafely(postDecoder, "name"); - int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + String format = getFormParameterSafely(postDecoder, "format"); + String start = getFormParameterSafely(postDecoder, "start"); + String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); + String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); - String code = String.valueOf(System.currentTimeMillis()); + String code = String.valueOf(System.currentTimeMillis()); - String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; - LeagueData leagueData = new SoloDraftLeagueData(_cardSets, _soloDraftDefinitions, parameters); - List series = leagueData.getSeries(); - int leagueStart = series.get(0).getStart(); - int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2); + String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; + LeagueData leagueData = new SoloDraftLeagueData(_cardSets, _soloDraftDefinitions, parameters); + List series = leagueData.getSeries(); + int leagueStart = series.get(0).getStart(); + int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2); - _leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd); + _leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd); - _leagueService.clearCache(); + _leagueService.clearCache(); - responseWriter.writeHtmlResponse("OK"); + responseWriter.writeHtmlResponse("OK"); } finally { postDecoder.destroy(); } @@ -439,50 +439,50 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String format = getFormParameterSafely(postDecoder, "format"); - String start = getFormParameterSafely(postDecoder, "start"); - String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); - String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); - String name = getFormParameterSafely(postDecoder, "name"); - int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + String format = getFormParameterSafely(postDecoder, "format"); + String start = getFormParameterSafely(postDecoder, "start"); + String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); + String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); - String code = String.valueOf(System.currentTimeMillis()); + String code = String.valueOf(System.currentTimeMillis()); - String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; - LeagueData leagueData = new SoloDraftLeagueData(_cardSets, _soloDraftDefinitions, parameters); + String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; + LeagueData leagueData = new SoloDraftLeagueData(_cardSets, _soloDraftDefinitions, parameters); - DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); - Document doc = documentBuilder.newDocument(); + Document doc = documentBuilder.newDocument(); - final List series = leagueData.getSeries(); + final List series = leagueData.getSeries(); - int end = series.get(series.size() - 1).getEnd(); + int end = series.get(series.size() - 1).getEnd(); - Element leagueElem = doc.createElement("league"); + Element leagueElem = doc.createElement("league"); - leagueElem.setAttribute("name", name); - leagueElem.setAttribute("cost", String.valueOf(cost)); - leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart())); - leagueElem.setAttribute("end", String.valueOf(end)); + leagueElem.setAttribute("name", name); + leagueElem.setAttribute("cost", String.valueOf(cost)); + leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart())); + leagueElem.setAttribute("end", String.valueOf(end)); - for (LeagueSerieData serie : series) { - Element serieElem = doc.createElement("serie"); - serieElem.setAttribute("type", serie.getName()); - serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches())); - serieElem.setAttribute("start", String.valueOf(serie.getStart())); - serieElem.setAttribute("end", String.valueOf(serie.getEnd())); - serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName()); - serieElem.setAttribute("collection", serie.getCollectionType().getFullName()); - serieElem.setAttribute("limited", String.valueOf(serie.isLimited())); + for (LeagueSerieData serie : series) { + Element serieElem = doc.createElement("serie"); + serieElem.setAttribute("type", serie.getName()); + serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches())); + serieElem.setAttribute("start", String.valueOf(serie.getStart())); + serieElem.setAttribute("end", String.valueOf(serie.getEnd())); + serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName()); + serieElem.setAttribute("collection", serie.getCollectionType().getFullName()); + serieElem.setAttribute("limited", String.valueOf(serie.isLimited())); - leagueElem.appendChild(serieElem); - } + leagueElem.appendChild(serieElem); + } - doc.appendChild(leagueElem); + doc.appendChild(leagueElem); - responseWriter.writeXmlResponse(doc); + responseWriter.writeXmlResponse(doc); } finally { postDecoder.destroy(); } @@ -493,26 +493,26 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String format = getFormParameterSafely(postDecoder, "format"); - String start = getFormParameterSafely(postDecoder, "start"); - String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); - String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); - String name = getFormParameterSafely(postDecoder, "name"); - int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + String format = getFormParameterSafely(postDecoder, "format"); + String start = getFormParameterSafely(postDecoder, "start"); + String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); + String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); - String code = String.valueOf(System.currentTimeMillis()); + String code = String.valueOf(System.currentTimeMillis()); - String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; - LeagueData leagueData = new NewSealedLeagueData(_cardSets, _soloDraftDefinitions, parameters); - List series = leagueData.getSeries(); - int leagueStart = series.get(0).getStart(); - int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2); + String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; + LeagueData leagueData = new NewSealedLeagueData(_cardSets, _soloDraftDefinitions, parameters); + List series = leagueData.getSeries(); + int leagueStart = series.get(0).getStart(); + int displayEnd = DateUtils.offsetDate(series.get(series.size() - 1).getEnd(), 2); - _leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd); + _leagueDao.addLeague(cost, name, code, leagueData.getClass().getName(), parameters, leagueStart, displayEnd); - _leagueService.clearCache(); + _leagueService.clearCache(); - responseWriter.writeHtmlResponse("OK"); + responseWriter.writeHtmlResponse("OK"); } finally { postDecoder.destroy(); } @@ -523,50 +523,50 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); try { - String format = getFormParameterSafely(postDecoder, "format"); - String start = getFormParameterSafely(postDecoder, "start"); - String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); - String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); - String name = getFormParameterSafely(postDecoder, "name"); - int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); + String format = getFormParameterSafely(postDecoder, "format"); + String start = getFormParameterSafely(postDecoder, "start"); + String serieDuration = getFormParameterSafely(postDecoder, "serieDuration"); + String maxMatches = getFormParameterSafely(postDecoder, "maxMatches"); + String name = getFormParameterSafely(postDecoder, "name"); + int cost = Integer.parseInt(getFormParameterSafely(postDecoder, "cost")); - String code = String.valueOf(System.currentTimeMillis()); + String code = String.valueOf(System.currentTimeMillis()); - String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; - LeagueData leagueData = new NewSealedLeagueData(_cardSets, _soloDraftDefinitions, parameters); + String parameters = format + "," + start + "," + serieDuration + "," + maxMatches + "," + code + "," + name; + LeagueData leagueData = new NewSealedLeagueData(_cardSets, _soloDraftDefinitions, parameters); - DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); + DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); - Document doc = documentBuilder.newDocument(); + Document doc = documentBuilder.newDocument(); - final List series = leagueData.getSeries(); + final List series = leagueData.getSeries(); - int end = series.get(series.size() - 1).getEnd(); + int end = series.get(series.size() - 1).getEnd(); - Element leagueElem = doc.createElement("league"); + Element leagueElem = doc.createElement("league"); - leagueElem.setAttribute("name", name); - leagueElem.setAttribute("cost", String.valueOf(cost)); - leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart())); - leagueElem.setAttribute("end", String.valueOf(end)); + leagueElem.setAttribute("name", name); + leagueElem.setAttribute("cost", String.valueOf(cost)); + leagueElem.setAttribute("start", String.valueOf(series.get(0).getStart())); + leagueElem.setAttribute("end", String.valueOf(end)); - for (LeagueSerieData serie : series) { - Element serieElem = doc.createElement("serie"); - serieElem.setAttribute("type", serie.getName()); - serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches())); - serieElem.setAttribute("start", String.valueOf(serie.getStart())); - serieElem.setAttribute("end", String.valueOf(serie.getEnd())); - serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName()); - serieElem.setAttribute("collection", serie.getCollectionType().getFullName()); - serieElem.setAttribute("limited", String.valueOf(serie.isLimited())); + for (LeagueSerieData serie : series) { + Element serieElem = doc.createElement("serie"); + serieElem.setAttribute("type", serie.getName()); + serieElem.setAttribute("maxMatches", String.valueOf(serie.getMaxMatches())); + serieElem.setAttribute("start", String.valueOf(serie.getStart())); + serieElem.setAttribute("end", String.valueOf(serie.getEnd())); + serieElem.setAttribute("format", _formatLibrary.getFormat(serie.getFormat()).getName()); + serieElem.setAttribute("collection", serie.getCollectionType().getFullName()); + serieElem.setAttribute("limited", String.valueOf(serie.isLimited())); - leagueElem.appendChild(serieElem); - } + leagueElem.appendChild(serieElem); + } - doc.appendChild(leagueElem); + doc.appendChild(leagueElem); - responseWriter.writeXmlResponse(doc); + responseWriter.writeXmlResponse(doc); } finally { postDecoder.destroy(); } diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin.html index 3ead1ef42..43366dad5 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin.html @@ -27,7 +27,7 @@
  • General Admin
  • League Admin
  • -
  • Ban Users
  • +
  • Manage Users
  • @@ -36,39 +36,7 @@
    -
    -

    Ban user

    -

    Permanently

    -
    - Name (case-sensitive):
    - -
    -

    Temporarily

    -
    - Name (case-sensitive):
    - Duration: -
    - -
    -

    Unban user

    -
    - Name (case-sensitive):
    - -
    -

    Find suspicious behaviour

    -

    Multiple user accounts

    -
    - Name (case-sensitive):
    - -
    -
    -
    +
    diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/generalAdmin.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/generalAdmin.html index 6dfe16de3..82c4c194b 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/generalAdmin.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/generalAdmin.html @@ -115,7 +115,7 @@ Ready. - All database operations have their results cached in memory to alleviate load on the DB while the server is running. This command clears that cache and forces any database calls to get the actual DB data. + All database operations have their results cached in memory to alleviate load on the DB while the server is running. This command clears that cache and forces any database calls to get the actual DB data (which will then be cached again).

    Also clears the internal caches of the League and Tournament services, forcing standings to be re-calculated. @@ -137,6 +137,8 @@ +
    +

    Message of the Day

    Sets the MOTD in the Game Hall just beneath the action bar at the top of the window. Supports HTML.

    @@ -155,10 +157,10 @@

    +
    +
    -

    Collections

    - -

    Add Items

    +

    Add Items to Collections

    diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/userAdmin.html b/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/userAdmin.html new file mode 100644 index 000000000..631e88975 --- /dev/null +++ b/gemp-lotr/gemp-lotr-async/src/main/web/includes/admin/userAdmin.html @@ -0,0 +1,139 @@ + + + + +
    +

    Ban User

    +

    Permanently

    +
    + Name (case-sensitive):
    + Ready. +
    + +

    Temporarily

    +
    + Name (case-sensitive):
    +
    Duration: +
    +
    + Ready. +
    + +

    + +

    Unban user

    +
    + Name (case-sensitive):
    + Ready. +
    + +

    + +

    Find Suspicious Behaviour

    +

    Multiple User Accounts

    +
    + Name (case-sensitive):
    + Ready. +
    +
    + +
    + + + + \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/communication.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/communication.js index 4366b635c..d32aa6d52 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/communication.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/communication.js @@ -802,6 +802,77 @@ var GempLotrCommunication = Class.extend({ }); }, + permabanUser:function (login, callback, errorMap) { + $.ajax({ + type:"POST", + url:this.url + "/admin/banUser", + cache:false, + data:{ + login:login + }, + success:this.deliveryCheck(callback), + error:this.errorCheck(errorMap), + dataType:"html" + }); + }, + + tempbanUser:function (login, duration, callback, errorMap) { + $.ajax({ + type:"POST", + url:this.url + "/admin/banUserTemp", + cache:false, + data:{ + login:login, + duration:duration + }, + success:this.deliveryCheck(callback), + error:this.errorCheck(errorMap), + dataType:"html" + }); + }, + + unbanUser:function (login, callback, errorMap) { + $.ajax({ + type:"POST", + url:this.url + "/admin/unBanUser", + cache:false, + data:{ + login:login + }, + success:this.deliveryCheck(callback), + error:this.errorCheck(errorMap), + dataType:"html" + }); + }, + + susUserSearch:function (login, callback, errorMap) { + $.ajax({ + type:"POST", + url:this.url + "/admin/findMultipleAccounts", + cache:false, + data:{ + login:login + }, + success:this.deliveryCheck(callback), + error:this.errorCheck(errorMap), + dataType:"html" + }); + }, + + banMultiple:function (login, callback, errorMap) { + $.ajax({ + type:"POST", + url:this.url + "/admin/banMultiple", + cache:false, + data:{ + login:login + }, + success:this.deliveryCheck(callback), + error:this.errorCheck(errorMap), + dataType:"html" + }); + }, + //NEVER EVER EVER use this for actual authentication diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/manage.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/manage.js new file mode 100644 index 000000000..cf5a81100 --- /dev/null +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/manage.js @@ -0,0 +1,153 @@ +$("banMain").ready( + function () { + + $("#permaban-button").button().click( + function () { + let resultdiv = $("#permaban-result"); + resultdiv.html("Processing..."); + + hall.comm.permabanUser($("#permaban-input").val(), function (string) { + resultdiv.html(string); + }, banErrorMap(resultdiv)); + }); + + $("#tempban-button").button().click( + function () { + let resultdiv = $("#tempban-result"); + resultdiv.html("Processing..."); + + hall.comm.tempbanUser($("#tempban-input").val(), $("#temp-ban-duration-select").val(), function (string) { + resultdiv.html(string); + }, banErrorMap(resultdiv)); + }); + + $("#unban-button").button().click( + function () { + let resultdiv = $("#unban-result"); + resultdiv.html("Processing..."); + + hall.comm.unbanUser($("#unban-input").val(), function (string) { + resultdiv.html(string); + }, banErrorMap(resultdiv)); + }); + + $("#sus-button").button().click( + function () { + let resultdiv = $("#sus-result"); + resultdiv.html("Processing..."); + + hall.comm.susUserSearch($("#sus-input").val(), susUserPopulate, banErrorMap(resultdiv), function() { + $("#displayUsers").hide(); + }); + }); + + + }); + +function susUserPopulate(xml) { + var root = xml.documentElement; + if(root == null) + { + xml = new DOMParser().parseFromString(xml,"text/xml"); + root = xml.documentElement; + } + + + if (root.tagName == 'players') { + var playersDiv = $("#displayUsers"); + playersDiv.show(); + playersDiv.html(""); + playersDiv.append("Similar accounts:"); + var form = $("
    "); + + var table = $("
    "); + table.append("IdNamePassword (hash)Create IPLogin IPUser status"); + + var players = root.getElementsByTagName("player"); + for (var j=0; j"+id+""+name+""+password+""+createIp+""+loginIp+""+status+""); + } + form.append(table); + + playersDiv.append(form); + playersDiv.append(" Ready."); + + $("#sus-result").html("OK"); + } +} + +function banMultiple() { + var actionSuccess = function () { + alert("Operation was successful"); + }; + + var data = {}; + var resultdiv = $("#ban-multiple-result"); + resultdiv.html("Processing..."); + + var inputs = $("input[type='text'], input[type='checkbox']:checked, option:selected", $("#banMultipleForm").eq(0)).each( + function () { + var input = $(this); + var name = null; + var value = null; + if (input.prop("tagName") == "INPUT") { + name = input.attr("name"); + value = input.val(); + } else if (input.prop("tagName") == "OPTION") { + name = input.parents("select").attr("name"); + value = input.attr("value"); + } + if (name != null && value != null) { + if (data[name] == null) + data[name] = new Array(); + data[name].push(value); + } + }); + + if(data.login == null) + { + $("#ban-multiple-result").html("Please check one or more users to ban."); + return; + } + hall.comm.banMultiple(data.login, function (string) { + $("#ban-multiple-result").html("OK"); + }, banErrorMap(resultdiv)); +} + + +function banErrorMap(outputControl, callback=null) { + return { + "0":function() { + outputControl.html("0: Server has been shut down or there was a problem with your internet connection.", "warningMessage"); + if(callback!=null) + callback(); + }, + "401":function() { + outputControl.html("401: You are not logged in."); + if(callback!=null) + callback(); + }, + "403": function() { + outputControl.html("403: You do not have permission to perform such actions."); + if(callback!=null) + callback(); + }, + "404": function() { + outputControl.html("404: User not found. Check that you have capitalized it correctly and removed whitespace and try again."); + if(callback!=null) + callback(); + }, + "410": function() { + outputControl.html("410: You have been inactive for too long and were loggedout. Refresh the page if you wish to re-stablish connection."); + if(callback!=null) + callback(); + } + }; +} \ No newline at end of file