Admin can now reset Rankingpoints of single user

This commit is contained in:
Maximilian Leopold 2019-06-06 13:11:15 +02:00
parent 3d8e04bc10
commit e65d32e106
3 changed files with 80 additions and 2 deletions

View File

@ -44,6 +44,7 @@
type="text"
label="Username eingeben"
unelevated color="negative"
v-model="deleteUser"
></q-input>
</div>
</div>
@ -53,6 +54,7 @@
label="Punkte des Nutzer zurücksetzen"
color="negative"
class="full-width"
@click="resetPoints()"
/>
</div>
<div v-if="hasAdminState" class="row">
@ -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"
});
}
},
}

View File

@ -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"),

View File

@ -8,6 +8,7 @@ import java.util.List;
public interface UserRepository extends CrudRepository<User, Integer> {
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" +