@@ -42,8 +42,10 @@
@@ -53,6 +55,7 @@
label="Punkte des Nutzer zurücksetzen"
color="negative"
class="full-width"
+ @click="resetPoints()"
/>
@@ -102,7 +105,9 @@
tab: 'solo',
rankinglist: [],
teamRankinglist: [],
- username: null
+ username: null,
+ deleteUser: null,
+ email: null,
}
},
created: function () {
@@ -111,6 +116,7 @@
this.fetchRankinglist();
this.fetchTeamRankinglist();
this.username = JSON.parse(localStorage.getItem('userToken')).name;
+ this.email = JSON.parse(localStorage.getItem('userMail'));
},
computed: {
hasAdminState() {
@@ -183,9 +189,57 @@
// lastSum = ranking.rankingPointsSum;
// }
},
- resetPoints(username){
+ resetPoints() {
+ if (this.deleteUser != null) {
+ let username = this.deleteUser;
+ let token = JSON.parse(localStorage.getItem('userToken')).token;
+ if (this.validateEmail(this.email)) {
+ console.log(this.validateEmail(this.email));
+
+ this.$axios.put('/api/resetSingleUser', null, {params: {token, username}})
+ .then((response) => {
+ console.log("Rankinglist: ");
+ console.log(response.data);
+ this.fetchRankinglist();
+ }).catch((error) => {
+ let msg;
+ let title;
+ if (error.response) {
+ title = "Bitte Eingaben überprüfen!";
+ msg = error.response.data;
+ } else if (error.request) {
+ title = "Verbindungsfehler!";
+ msg = "Es konnte keine Verbindung zum Server aufgebaut werden. Versuchen Sie es später noch einmal!"
+ console.log(error.request);
+ } else {
+ title = "Error";
+ msg = error.message;
+ console.log('Error', error.message);
+ }
+ console.log(error.config);
+ this.$store.commit('dialog/NEW_MESSAGE_DIALOG', {message: msg, title: title,});
+ })
+ } else {
+ this.$store.commit('dialog/NEW_MESSAGE_DIALOG', {
+ message: "Bitte geben Sie eine gültige Email ein",
+ title: "Ungültige Email",
+ color: "negative"
+ });
+ }
+ } else {
+ this.$store.commit('dialog/NEW_MESSAGE_DIALOG', {
+ message: "Zum zurücksetzen der Punkte eines Nutzers gib bitte einen Usernamen ein",
+ title: "Fehlender Username",
+ color: "negative"
+ });
+ }
},
+ validateEmail(email) {
+ let re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
+ return re.test(String(email).toLowerCase());
+ },
+
}
}
diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java
index f752dc4..13d1bb9 100644
--- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java
+++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java
@@ -425,7 +425,7 @@ public class Controller {
for (RankingListHelper rankingListHelper: sendBackUsers) {
logger.debug("RankingList Helper " + rankingListHelper.getUsername());
logger.debug("User: " + user.getUsername());
- if(rankingListHelper.getUsername().equals(user.getUsername())){
+ if(rankingListHelper.getUsername().equals(user.getEmail())){
userAlreadyInRankingList = true;
break;
}
@@ -435,7 +435,7 @@ public class Controller {
ResponseEntity singlePlace = getRankingPlace(user.getEmail());
if (singlePlace.getStatusCodeValue() == 200) {
- RankingListHelper rankingListHelper = new RankingListHelper(user.getUsername(), (Integer) user_infoRepository.findUser_InfoByUser(user).getRankingPointsSum(), (Integer) getRankingPlace(user.getEmail()).getBody());
+ RankingListHelper rankingListHelper = new RankingListHelper(user.getEmail(), (Integer) user_infoRepository.findUser_InfoByUser(user).getRankingPointsSum(), (Integer) getRankingPlace(user.getEmail()).getBody());
logger.debug(String.valueOf((Integer) singlePlace.getBody()));
sendBackUsers.add(rankingListHelper);
}
@@ -1284,6 +1284,67 @@ public class Controller {
}
+ @ApiOperation(value = "Resets the points of a single User ")
+ @ApiResponses(value = {
+ @ApiResponse(code = 404, message = "Database error"),
+ @ApiResponse(code = 401, message = "JWT Token expired"),
+ @ApiResponse(code = 400, message = "Something went wrong at verification")
+ })
+ @CrossOrigin(origins = "*", allowedHeaders = "*") // only for dev purpose
+ @RequestMapping(value = "/api/resetSingleUser", method = RequestMethod.PUT, produces = "application/json")
+ public ResponseEntity resetSingleUser(@RequestParam String token, @RequestParam String username) {
+ logger.debug("API CALL: /api/resetSingleUser");
+ // verify user
+ ResponseEntity verifyToken = VerificationUtil.verifyToken(token);
+
+ if (verifyToken.getStatusCodeValue() != 200) {
+ return verifyToken;
+ }
+
+ //get User
+ Claims claims = (Claims) verifyToken.getBody();
+
+ ResponseEntity getUser = FinderUtil.findUserFromClaim(claims);
+
+ if (getUser.getStatusCodeValue() != 200) {
+ return getUser;
+ }
+
+ User user = (User) getUser.getBody();
+
+ logger.debug("/api/resetRankingList: " + "User verificated: " + user.getEmail());
+ //----------------------
+ boolean isAdmin = false;
+ for (Role role : user.getRoles()) {
+ if (role.getId() == 7) {
+ isAdmin = true;
+ }
+ }
+
+ if (isAdmin) {
+
+ User deleteUser = userRepository.findByEmail(username);
+
+
+ if(deleteUser == null) {
+ return ResponseEntity.status(400).body("Es wurde kein User mit dieser Email gefunden.");
+ }
+
+ User_Info user_info = user_infoRepository.findUser_InfoByUser(deleteUser);
+ user_info.setRankingPointsSum(0);
+ user_infoRepository.save(user_info);
+
+ for (Bearbeitet bearbeitet : bearbeitetRepository.findByUser(deleteUser)) {
+ if (bearbeitet.getCacheAccesDefinition().getId() == 1) {
+ bearbeitetRepository.delete(bearbeitet);
+ }
+ }
+ return ResponseEntity.status(200).body(HttpStatus.OK);
+ } else {
+ return ResponseEntity.status(400).body("Der Benutzer ist kein Admin und kann deshalb die Rangliste nicht zurücksetzen.");
+ }
+ }
+
@ApiOperation(value = "Test method (Changes its purpose often)")
@ApiResponses(value = {
@ApiResponse(code = 404, message = "Database error"),
diff --git a/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java b/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java
index 25ec2f9..a4a04a0 100644
--- a/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java
+++ b/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java
@@ -8,6 +8,7 @@ import java.util.List;
public interface UserRepository extends CrudRepository {
User findByEmail(String email);
+ User findByUsername(String username);
// @Query(value = "SELECT DISTINCT u.id AS ID, username AS Name, ui.ranking_points_sum AS Ranglistenpunkte\n" +
// "FROM user u,\n" +
@@ -19,7 +20,7 @@ public interface UserRepository extends CrudRepository {
// "LIMIT 10;", nativeQuery = true)
// List getRankingList();
- @Query(value = "SELECT DISTINCT u.id AS ID, username AS Name, ui.ranking_points_sum AS Ranglistenpunkte, email Email\n" +
+ @Query(value = "SELECT DISTINCT u.id AS ID, u.email AS Name, ui.ranking_points_sum AS Ranglistenpunkte, email Email\n" +
"FROM user u,\n" +
" user_info ui,\n" +
" user_roles ur\n" +