diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java index afa55ec..f1e125c 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/controller/VotingController.java @@ -26,7 +26,7 @@ import java.util.*; @Controller public class VotingController { - private Boolean candidatesAdded = true; + private Boolean candidatesAdded = false; private static final Logger LOGGER = LogManager.getLogger(VotingController.class); private TableAction tableAction = new TableAction(); @@ -51,7 +51,6 @@ public class VotingController { @PostConstruct public void init() { - LOGGER.info("setups"); if (voterRepository.findAll().size() == 0) { tableAction.setUpVoters(voterRepository); LOGGER.info("Voters successfully set up"); @@ -86,6 +85,7 @@ public class VotingController { public String VerifyName(@RequestParam String name, Model model) { if (name.strip().toLowerCase().matches("[a-z]+\\.[a-z]+@adolfinum+\\.de$")) { try { + LOGGER.warn(name); Voter voter = voterRepository.findByEmail(name.toLowerCase().strip()); if (voter.getVote_status()) { LOGGER.warn(name + " has already voted"); @@ -97,9 +97,12 @@ public class VotingController { AuthCode authCode = tableAction.generateToken(name, RandomNumber.getRandomNumberString(), authCodesRepository); sendSimpleMessage(name,"Code zur Authentifizierung", "Dein Code lautet: " + authCode.getCode()); model.addAttribute("name", name); + model.addAttribute("codeExpired", false); + model.addAttribute("codeFalse", false); return "authenticate.html"; } } catch (Exception e) { + e.printStackTrace(); LOGGER.error(name + " is not allowed to vote"); return "errors/notRegistered.html"; } @@ -109,23 +112,40 @@ public class VotingController { } @RequestMapping("/vote") - public String voting_adding(@RequestParam String name, Model model){ - if(candidatesAdded) { - List categories = categoryRepository.findAll(); - model.addAttribute("categories", categories); - model.addAttribute("name", name); - return "voting.html"; - } else { - PossibleCandidateWrapper possibleCandidates = new PossibleCandidateWrapper(); - List categories = categoryRepository.findAll(); - for (int i = 0; i < categories.size(); i++){ - possibleCandidates.addPossibleCandidate(new PossibleCandidate()); - } - model.addAttribute("categories", categories); - model.addAttribute("form", possibleCandidates); - model.addAttribute("name", name); - return "addingCandidates.html"; + public String voting_adding(@RequestParam String code,@RequestParam String name, Model model){ + switch (tableAction.checkToken(name, code, authCodesRepository)){ + case "matched": + LOGGER.warn("matched"); + if(candidatesAdded) { + List categories = categoryRepository.findAll(); + model.addAttribute("categories", categories); + model.addAttribute("name", name); + return "voting.html"; + } else { + PossibleCandidateWrapper possibleCandidates = new PossibleCandidateWrapper(); + List categories = categoryRepository.findAll(); + for (int i = 0; i < categories.size(); i++){ + possibleCandidates.addPossibleCandidate(new PossibleCandidate()); + } + model.addAttribute("categories", categories); + model.addAttribute("form", possibleCandidates); + model.addAttribute("name", name); + return "addingCandidates.html"; + } + + case "expired": + model.addAttribute("name", name); + model.addAttribute("codeExpired", true); + model.addAttribute("codeFalse", false); + return "authenticate.html"; + + case "wrong": + model.addAttribute("name", name); + model.addAttribute("codeExpired", false); + model.addAttribute("codeFalse", true); + return "authenticate.html"; } + return "fatalError"; } @RequestMapping("/saveCandidates") @@ -148,7 +168,7 @@ public class VotingController { } index++; } - //tableAction.updateCandidatesubmit_status(voterEmail, voterRepository); + tableAction.updateCandidatesubmit_status(name, voterRepository); return "candidateAddingSuccessful.html"; } } @@ -162,7 +182,7 @@ public class VotingController { for (String s : partVoteValues) { tableAction.voteFor(s, candidateRepository); } - //tableAction.updateVotingStatus(voterEmail, voterRepository); + tableAction.updateVotingStatus(name, voterRepository); LOGGER.info(name + " has voted!"); return "voteSuccessful.html"; } diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/AuthCode.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/AuthCode.java index be3231e..62f2742 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/AuthCode.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/entities/AuthCode.java @@ -36,4 +36,12 @@ public class AuthCode { public long getTime() { return time; } + + public void setTime(long time) { + this.time = time; + } + + public Long getId() { + return id; + } } diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/AuthCodesRepository.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/AuthCodesRepository.java index 18a49d2..e759799 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/AuthCodesRepository.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/repositories/AuthCodesRepository.java @@ -2,6 +2,8 @@ package com.github.cato447.AbizeitungVotingSystem.repositories; import com.github.cato447.AbizeitungVotingSystem.entities.AuthCode; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; public interface AuthCodesRepository extends JpaRepository { diff --git a/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java b/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java index ecfec8d..8e2b457 100644 --- a/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java +++ b/src/main/java/com/github/cato447/AbizeitungVotingSystem/table/TableAction.java @@ -7,6 +7,10 @@ import org.aspectj.weaver.loadtime.definition.LightXMLParser; import java.io.File; import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.JarURLConnection; +import java.net.URL; +import java.net.URLConnection; import java.util.*; public class TableAction { @@ -39,10 +43,13 @@ public class TableAction { public AuthCode generateToken(String name, String code, AuthCodesRepository authCodesRepository) { AuthCode authCode = new AuthCode(name, code); - if (authCodesRepository.findByName(authCode.getName()) != null) { - authCodesRepository.findByName(authCode.getName()).setCode(authCode.getCode()); - return authCode; - } else { + try{ + AuthCode existingCode = authCodesRepository.findByName(authCode.getName()); + existingCode.setCode(code); + existingCode.setTime(System.currentTimeMillis()); + authCodesRepository.save(existingCode); + return existingCode; + } catch (Exception e){ authCodesRepository.save(authCode); return authCode; } @@ -74,7 +81,8 @@ public class TableAction { public void setUpVoters(VoterRepository voterRepository){ try { - File emailFile = new File("src/main/resources/Q2_emails.txt"); + String path = "src/main/resources/Q2_emails.txt"; + File emailFile = new File(path); Scanner myReader = new Scanner(emailFile); ArrayList voters = new ArrayList(); while (myReader.hasNextLine()) { @@ -104,9 +112,9 @@ public class TableAction { } public void setUpCategories(CategoryRepository categoryRepository){ - ArrayList names = new ArrayList<>(); try { - File categoryFile = new File("src/main/resources/Categories.txt"); + String path = "src/main/resources/Categories.txt"; + File categoryFile = new File(path); Scanner myReader = new Scanner(categoryFile); ArrayList categories = new ArrayList(); while (myReader.hasNextLine()) { diff --git a/src/main/resources/Categories.txt b/src/main/resources/Categories.txt index 87b99ee..143e51d 100644 --- a/src/main/resources/Categories.txt +++ b/src/main/resources/Categories.txt @@ -1,36 +1,36 @@ -1. Wer wird nie von zuhause ausziehen? (Schüler) -1. Wer ist der/die kreativste Zuspätkommer/in (Schüler) -1. Mit wem wird man am ehesten in der Zukunft angeben zur Schule gegangen zu sein? (Schüler) -1. Wer wohnt im Fittnessstudio? (Schüler) -1. Wer ist der coolste Leherer? -1. Wer ist die coolste Lehrerin? -1. Wer macht den besten Matheunterricht? -1. Welcher Lehrer hat den Beruf verfehlt? -1. Welcher Lehrer ist nie da? -1. Wer hat das Internet erfunden? -1. Wer sponsort Schollin? (Schüler) -1. Wer ist am engagiertesten? (Schüler) -1. Wer wird Bundeskanzler? (Schüler) -1. Wer hat das Kimpeltum gegründet? (Schüler) -1. Wer saß am längsten im Klassenschrank? (Schüler) -1. Wer hat die gößte Sauklaue? (Leherer) -1. Wer gründet das nächste Google? (Schüler) -1. Wer kommt am schnellsten in den Knast? (Schüler) -1. Top 3-Pärchen? (Schüler) -1. Top 3 Lehrergespanne? (Schüler) -1. Wer ist der motiviertester Lehrer? -1. Wer ist Google auf zwei Beinen(Schüler)? -1. Wer hat den besten Style (Schüler)? -1. Wer hat den besten Style (Lehrer)? -1. Wer währe ein gutes Pärchen (Lehrer)? -1. Wer trinkt am meisten Kaffe (Schüler)? -1. Wer trinkt am meisten Kaffe (Lehrer)? -1. Tischflip? -1. Wer wird Harzer? -1. Wer hat Wiedererkennungswert (Schüler)? -1. Wen erkennt man an der Lache (Schüler)? -1. Wer bringt die dümmsten Witze? (Lehrer) -1. Wer hat den meisten Schwachsinn erzählt? (Lehrer) -1. Welche Lehrer machen nie das, was die Schüler wollten? (Lehrer) -1. Wer isst immer? (Lehrer) -1. Wer hat die meisten peinlichen Momente gebracht? \ No newline at end of file +Wer wird nie von zuhause ausziehen? +Wer ist der/die kreativste Zuspätkommer/in? +Mit wem wird man am ehesten in der Zukunft angeben zur Schule gegangen zu sein? +Wer wohnt im Fittnessstudio? (Schüler) +Wer ist der coolste Leherer? +Wer ist die coolste Lehrerin? +Wer macht den besten Matheunterricht? +Welcher Lehrer hat den Beruf verfehlt? +Welcher Lehrer ist nie da? +Wer hat das Internet erfunden? +Wer sponsort Schollin? (Schüler) +Wer ist am engagiertesten? (Schüler) +Wer wird Bundeskanzler? (Schüler) +Wer hat das Kimpeltum gegründet? (Schüler) +Wer saß am längsten im Klassenschrank? (Schüler) +Wer hat die gößte Sauklaue? (Leherer) +Wer gründet das nächste Google? (Schüler) +Wer kommt am schnellsten in den Knast? (Schüler) +Top 3-Pärchen? (Schüler) +Top 3 Lehrergespanne? (Schüler) +Wer ist der motiviertester Lehrer? +Wer ist Google auf zwei Beinen(Schüler)? +Wer hat den besten Style (Schüler)? +Wer hat den besten Style (Lehrer)? +Wer währe ein gutes Pärchen (Lehrer)? +Wer trinkt am meisten Kaffe (Schüler)? +Wer trinkt am meisten Kaffe (Lehrer)? +Tischflip? +Wer wird Harzer? +Wer hat Wiedererkennungswert (Schüler)? +Wen erkennt man an der Lache (Schüler)? +Wer bringt die dümmsten Witze? (Lehrer) +Wer hat den meisten Schwachsinn erzählt? (Lehrer) +Welche Lehrer machen nie das, was die Schüler wollten? (Lehrer) +Wer isst immer? (Lehrer) +Wer hat die meisten peinlichen Momente gebracht? \ No newline at end of file diff --git a/src/main/resources/static/styles/authenticate.css b/src/main/resources/static/styles/authenticate.css index 5ba3314..46f1fd3 100644 --- a/src/main/resources/static/styles/authenticate.css +++ b/src/main/resources/static/styles/authenticate.css @@ -25,7 +25,7 @@ h1 { margin-bottom: 5%; } -h2.categoryHeader { +h2 { color: #FFF; } @@ -53,6 +53,11 @@ input { text-shadow: 0 -2px 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(255, 255, 255, 0.2); } +.errorCode { + margin-top: 10%; + color: #bb1515; +} + html, body { width: 100%; diff --git a/src/main/resources/static/styles/dashboard.css b/src/main/resources/static/styles/dashboard.css index 64b3054..25127f3 100644 --- a/src/main/resources/static/styles/dashboard.css +++ b/src/main/resources/static/styles/dashboard.css @@ -2,7 +2,9 @@ td.voted { background-color: #f05048; } -td.submitted {} +td.submitted { + background-color: #dbc95e; +} td.notVoted { background-color: #76ed6b; diff --git a/src/main/resources/templates/authenticate.html b/src/main/resources/templates/authenticate.html index 23698a0..7806727 100644 --- a/src/main/resources/templates/authenticate.html +++ b/src/main/resources/templates/authenticate.html @@ -35,12 +35,26 @@ if (!this.value && ev.key === "Backspace" && i) $inp.eq(i - 1).focus(); } }); + + function getCode() { + groupInputs = document.querySelectorAll(".passInput"); + var code = ""; + groupInputs.forEach(input => { + console.log("Input: " + input.value); + code += input.value; + }); + console.log("Code: " + code); + output = document.getElementById("authCode"); + output.value = code; + document.getElementById("passForm").submit(); + } -

-

Gebe den enthaltenen Authentifizierungscode ein

+

+

Bitte gebe den Authentifizierungscode ein

+ @@ -48,8 +62,15 @@ -
+ +
+

Der Code ist nicht mehr gültig!
Fordere einen neuen an

+
+ +
+

Der eingegebene Code ist falsch

+
diff --git a/src/main/resources/templates/dashboard.html b/src/main/resources/templates/dashboard.html index 5b7f1cd..ec33187 100644 --- a/src/main/resources/templates/dashboard.html +++ b/src/main/resources/templates/dashboard.html @@ -18,31 +18,30 @@ Id E-Mail - Status -
- - - -
-
- - - +
+ + +
+
+ + +
+
- +
  • Kandidaten Liste