diff --git a/labswp_2019_sose_geocaching_frontend/frontend/src/pages/ranking.vue b/labswp_2019_sose_geocaching_frontend/frontend/src/pages/ranking.vue
index 211979f..63857cd 100644
--- a/labswp_2019_sose_geocaching_frontend/frontend/src/pages/ranking.vue
+++ b/labswp_2019_sose_geocaching_frontend/frontend/src/pages/ranking.vue
@@ -44,6 +44,7 @@
type="text"
label="Username eingeben"
unelevated color="negative"
+ v-model="deleteUser"
>
@@ -53,6 +54,7 @@
label="Punkte des Nutzer zurücksetzen"
color="negative"
class="full-width"
+ @click="resetPoints()"
/>
@@ -102,7 +104,8 @@
tab: 'solo',
rankinglist: [],
teamRankinglist: [],
- username: null
+ username: null,
+ deleteUser: null
}
},
created: function () {
@@ -183,7 +186,25 @@
// lastSum = ranking.rankingPointsSum;
// }
},
- resetPoints(username){
+ resetPoints(){
+ if(this.deleteUser != null){
+ let username = this.deleteUser;
+ let token = JSON.parse(localStorage.getItem('userToken')).token;
+
+ this.$axios.put('/api/resetSingleUser',null, {params: {token, username}})
+ .then((response) => {
+ console.log("Rankinglist: ");
+ console.log(response.data);
+ this.fetchRankinglist();
+ }).catch((error) => {
+ })
+ } 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"
+ });
+ }
},
}
diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java
index f752dc4..bbf0e1b 100644
--- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java
+++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java
@@ -1284,6 +1284,62 @@ 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.findByUsername(username);
+
+ 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..9c920fe 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" +