Changed Methods to user FinderUtil

This commit is contained in:
Maximilian Leopold 2019-04-15 17:23:34 +02:00
parent 41c5dc482d
commit 663d3482ee
2 changed files with 135 additions and 99 deletions

View File

@ -6,7 +6,6 @@ import hhn.labsw.bugageocaching.repositories.*;
import hhn.labsw.bugageocaching.util.FinderUtil; import hhn.labsw.bugageocaching.util.FinderUtil;
import hhn.labsw.bugageocaching.util.VerificationUtil; import hhn.labsw.bugageocaching.util.VerificationUtil;
import io.jsonwebtoken.Claims; import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts; import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -107,60 +106,75 @@ public class Controller {
Bearbeitet bearbeitet = new Bearbeitet(); Bearbeitet bearbeitet = new Bearbeitet();
try {
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
User user = userRepository.findByUsername(claims.getSubject()); //----------------------
if (user == null) { //Verify token
return ResponseEntity.status(404).body("User was not found"); ResponseEntity tokenVerification = VerificationUtil.verifyToken(token);
}
bearbeitet.setUser(user);
Optional<Cache> cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID)); //Error in token verification
if (cacheOptional.isPresent()) { if (tokenVerification.getStatusCodeValue() != 200) {
Cache cache = cacheOptional.get(); return tokenVerification;
if (bearbeitetRepository.findByUserAndCache(user, cache) != null) {
Bearbeitet bearbeitet1 = bearbeitetRepository.findByUserAndCache(user, cache);
return ResponseEntity.status(200).body(bearbeitet1);
}
bearbeitet.setCache(cache);
Station startStation = cache.getStationen().get(0);
bearbeitet.setAktuelleStation(startStation);
} else {
return ResponseEntity.status(404).body("Couldnt find Cache " + cacheID);
}
Optional<CacheAccesDefinition> cacheAccesDefinitionOptional =
cacheAccesDefinitionRepository.findById(0); // angefangen
if (cacheAccesDefinitionOptional.isPresent()) {
CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get();
bearbeitet.setCacheAccesDefinition(cacheAccesDefinition);
} else {
return ResponseEntity.status(404).body("There is no cacheAccesDefinition with the ID " + 0);
}
bearbeitetRepository.save(bearbeitet);
return ResponseEntity.status(201).body(new Gson().toJson(bearbeitet));
} catch (ExpiredJwtException e) {
return ResponseEntity.status(400).body("JWT Token expired");
} catch (Exception e) {
return ResponseEntity.status(400).body("JWT Token invalid");
} }
Claims claims = (Claims) tokenVerification.getBody();
ResponseEntity getUser = FinderUtil.findUserByUsername(claims.getSubject());
if (getUser.getStatusCodeValue() != 200) {
return getUser;
}
User user = (User) getUser.getBody();
bearbeitet.setUser(user);
//----------------------
//Get Cache
ResponseEntity getCache = FinderUtil.findCacheById(cacheID);
if (getCache.getStatusCodeValue() != 200) {
return getCache;
}
Cache cache = (Cache) getCache.getBody();
//----------------------
if (bearbeitetRepository.findByUserAndCache(user, cache) != null) {
Bearbeitet bearbeitet1 = bearbeitetRepository.findByUserAndCache(user, cache);
return ResponseEntity.status(200).body(bearbeitet1);
}
bearbeitet.setCache(cache);
Station startStation = cache.getStationen().get(0);
bearbeitet.setAktuelleStation(startStation);
Optional<CacheAccesDefinition> cacheAccesDefinitionOptional =
cacheAccesDefinitionRepository.findById(0); // angefangen
if (cacheAccesDefinitionOptional.isPresent()) {
CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get();
bearbeitet.setCacheAccesDefinition(cacheAccesDefinition);
} else {
return ResponseEntity.status(404).body("There is no cacheAccesDefinition with the ID " + 0);
}
bearbeitetRepository.save(bearbeitet);
return ResponseEntity.status(201).body(new Gson().toJson(bearbeitet));
} else { // kein angemeldeter User startet den cache(es wird nur der cache als parameter übergeben) } else { // kein angemeldeter User startet den cache(es wird nur der cache als parameter übergeben)
Optional<Cache> cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID));
if (cacheOptional.isPresent()) { ResponseEntity getCache = FinderUtil.findCacheById(cacheID);
Cache cache = cacheOptional.get();
return ResponseEntity.status(200).body(new Gson().toJson(cache)); if (getCache.getStatusCodeValue() != 200) {
} else { return getCache;
return ResponseEntity.status(404).body("Couldnt find Cache " + cacheID);
} }
Cache cache = (Cache) getCache.getBody();
return ResponseEntity.status(200).body(new Gson().toJson(cache));
} }
} }
@ -186,17 +200,21 @@ public class Controller {
Claims claims = (Claims) tokenVerification.getBody(); Claims claims = (Claims) tokenVerification.getBody();
User user = userRepository.findByUsername(claims.getSubject());
if (user == null) { ResponseEntity getUser = FinderUtil.findUserByUsername(claims.getSubject());
return ResponseEntity.status(404).body("User was not found");
if (getUser.getStatusCodeValue() != 200) {
return getUser;
} }
User user = (User) getUser.getBody();
//---------------------- //----------------------
//---------------------- //----------------------
//Get Cache //Get Cache
ResponseEntity getCache = FinderUtil.findCacheById(cacheID); ResponseEntity getCache = FinderUtil.findCacheById(cacheID);
if(getCache.getStatusCodeValue() != 200){ if (getCache.getStatusCodeValue() != 200) {
return getCache; return getCache;
} }
@ -207,7 +225,7 @@ public class Controller {
//Get durchgeführter Cache //Get durchgeführter Cache
ResponseEntity getDurchgefuehrterCache = FinderUtil.findCacheById(durchgefuehrterCacheID); ResponseEntity getDurchgefuehrterCache = FinderUtil.findCacheById(durchgefuehrterCacheID);
if(getDurchgefuehrterCache.getStatusCodeValue() != 200){ if (getDurchgefuehrterCache.getStatusCodeValue() != 200) {
return getDurchgefuehrterCache; return getDurchgefuehrterCache;
} }
@ -218,7 +236,7 @@ public class Controller {
//Get Station //Get Station
ResponseEntity getStation = FinderUtil.findStationById(stationID); ResponseEntity getStation = FinderUtil.findStationById(stationID);
if(getStation.getStatusCodeValue() != 200){ if (getStation.getStatusCodeValue() != 200) {
return getStation; return getStation;
} }
@ -233,7 +251,7 @@ public class Controller {
//Get Bearbeitet entry //Get Bearbeitet entry
ResponseEntity getBearbeitet = FinderUtil.findBearbeitetByUserAndCache(user, cache); ResponseEntity getBearbeitet = FinderUtil.findBearbeitetByUserAndCache(user, cache);
if(getBearbeitet.getStatusCodeValue() != 200){ if (getBearbeitet.getStatusCodeValue() != 200) {
return getBearbeitet; return getBearbeitet;
} }
@ -242,7 +260,7 @@ public class Controller {
Station aktuelleStation = bearbeitet.getAktuelleStation(); Station aktuelleStation = bearbeitet.getAktuelleStation();
if(aktuelleStation == null){ if (aktuelleStation == null) {
return ResponseEntity.status(400).body("Database Error"); return ResponseEntity.status(400).body("Database Error");
} }
@ -290,17 +308,15 @@ public class Controller {
@ResponseBody @ResponseBody
public ResponseEntity checkAdmin(@RequestParam String token) { public ResponseEntity checkAdmin(@RequestParam String token) {
try { ResponseEntity verifyToken = VerificationUtil.verifyToken(token);
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
return ResponseEntity.status(200).body(claims.get("admin")); if (verifyToken.getStatusCodeValue() != 200) {
} catch (ExpiredJwtException e) { return verifyToken;
return ResponseEntity.status(400).body("JWT Token expired");
} catch (Exception e) {
return ResponseEntity.status(400).body("JWT Token invalid");
} }
Claims claims = (Claims) verifyToken.getBody();
return ResponseEntity.status(200).body(claims.get("admin"));
} }
//Bis hier //Bis hier
@ -322,31 +338,35 @@ public class Controller {
@RequestMapping("/api/getMyCaches") @RequestMapping("/api/getMyCaches")
@ResponseBody @ResponseBody
public ResponseEntity getMyCaches(@RequestParam String token) { public ResponseEntity getMyCaches(@RequestParam String token) {
try {
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
User user = userRepository.findByUsername(claims.getSubject()); ResponseEntity verifyToken = VerificationUtil.verifyToken(token);
if (user != null) { if (verifyToken.getStatusCodeValue() != 200) {
ArrayList<Bearbeitet> bearbeitetList = new ArrayList<>(); return verifyToken;
}
for (Bearbeitet bearbeitet : bearbeitetRepository.findAll()) { Claims claims = (Claims) verifyToken.getBody();
if (bearbeitet.getUser().getId() == user.getId()) {
bearbeitetList.add(bearbeitet); ResponseEntity getUser = FinderUtil.findUserByUsername(claims.getSubject());
}
if (getUser.getStatusCodeValue() != 200) {
return getUser;
}
User user = (User) getUser.getBody();
if (user != null) {
ArrayList<Bearbeitet> bearbeitetList = new ArrayList<>();
for (Bearbeitet bearbeitet : bearbeitetRepository.findAll()) {
if (bearbeitet.getUser().getId() == user.getId()) {
bearbeitetList.add(bearbeitet);
} }
return ResponseEntity.status(200).body(new Gson().toJson(bearbeitetList));
} else {
return ResponseEntity.status(404).body("User was not found in the database");
} }
} catch (ExpiredJwtException e) { return ResponseEntity.status(200).body(new Gson().toJson(bearbeitetList));
return ResponseEntity.status(400).body("JWT Token expired"); } else {
} catch (Exception e) { return ResponseEntity.status(404).body("User was not found in the database");
return ResponseEntity.status(400).body("JWT Token invalid");
} }
} }
@ -372,23 +392,29 @@ public class Controller {
@RequestMapping("/api/getUser") @RequestMapping("/api/getUser")
@ResponseBody @ResponseBody
public ResponseEntity getUser(@RequestParam String token) { public ResponseEntity getUser(@RequestParam String token) {
try {
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
ResponseEntity verifyToken = VerificationUtil.verifyToken(token);
User user = userRepository.findByUsername(claims.getSubject()); if (verifyToken.getStatusCodeValue() != 200) {
if (user != null) { return verifyToken;
return ResponseEntity.status(200).body(new Gson().toJson(user)); }
} else {
return ResponseEntity.status(404).body("User was not found in the database"); Claims claims = (Claims) verifyToken.getBody();
}
} catch (ExpiredJwtException e) { ResponseEntity getUser = FinderUtil.findUserByUsername(claims.getSubject());
return ResponseEntity.status(400).body("JWT Token expired");
} catch (Exception e) { if (getUser.getStatusCodeValue() != 200) {
return ResponseEntity.status(400).body("JWT Token invalid"); return getUser;
}
User user = (User) getUser.getBody();
if (user != null) {
return ResponseEntity.status(200).body(new Gson().toJson(user));
} else {
return ResponseEntity.status(404).body("User was not found in the database");
} }
} }
} }

View File

@ -64,4 +64,14 @@ public class FinderUtil {
return ResponseEntity.status(404).body("The user has not started this cache yet"); return ResponseEntity.status(404).body("The user has not started this cache yet");
} }
public static ResponseEntity findUserByUsername(String username){
User user = userRepository.findByUsername(username);
if(user != null){
return ResponseEntity.status(200).body(user);
}
return ResponseEntity.status(404).body("Couldnt find user with username " + username);
}
} }