From 663d3482ee1a0679254dbfbfb5990d9ec34ea20c Mon Sep 17 00:00:00 2001 From: Maximilian Leopold Date: Mon, 15 Apr 2019 17:23:34 +0200 Subject: [PATCH] Changed Methods to user FinderUtil --- .../bugageocaching/controller/Controller.java | 224 ++++++++++-------- .../labsw/bugageocaching/util/FinderUtil.java | 10 + 2 files changed, 135 insertions(+), 99 deletions(-) diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 2f14845..66e1f5f 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -6,7 +6,6 @@ import hhn.labsw.bugageocaching.repositories.*; import hhn.labsw.bugageocaching.util.FinderUtil; import hhn.labsw.bugageocaching.util.VerificationUtil; import io.jsonwebtoken.Claims; -import io.jsonwebtoken.ExpiredJwtException; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.springframework.beans.factory.annotation.Autowired; @@ -107,60 +106,75 @@ public class Controller { 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) { - return ResponseEntity.status(404).body("User was not found"); - } - bearbeitet.setUser(user); + //---------------------- + //Verify token + ResponseEntity tokenVerification = VerificationUtil.verifyToken(token); - Optional cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID)); - if (cacheOptional.isPresent()) { - Cache cache = cacheOptional.get(); - - 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 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"); + //Error in token verification + if (tokenVerification.getStatusCodeValue() != 200) { + return tokenVerification; } + 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 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) - Optional cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID)); - if (cacheOptional.isPresent()) { - Cache cache = cacheOptional.get(); - return ResponseEntity.status(200).body(new Gson().toJson(cache)); - } else { - return ResponseEntity.status(404).body("Couldnt find Cache " + cacheID); + + ResponseEntity getCache = FinderUtil.findCacheById(cacheID); + + if (getCache.getStatusCodeValue() != 200) { + return getCache; } + + 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(); - User user = userRepository.findByUsername(claims.getSubject()); - if (user == null) { - return ResponseEntity.status(404).body("User was not found"); + + ResponseEntity getUser = FinderUtil.findUserByUsername(claims.getSubject()); + + if (getUser.getStatusCodeValue() != 200) { + return getUser; } + + User user = (User) getUser.getBody(); //---------------------- //---------------------- //Get Cache ResponseEntity getCache = FinderUtil.findCacheById(cacheID); - if(getCache.getStatusCodeValue() != 200){ + if (getCache.getStatusCodeValue() != 200) { return getCache; } @@ -207,7 +225,7 @@ public class Controller { //Get durchgeführter Cache ResponseEntity getDurchgefuehrterCache = FinderUtil.findCacheById(durchgefuehrterCacheID); - if(getDurchgefuehrterCache.getStatusCodeValue() != 200){ + if (getDurchgefuehrterCache.getStatusCodeValue() != 200) { return getDurchgefuehrterCache; } @@ -218,7 +236,7 @@ public class Controller { //Get Station ResponseEntity getStation = FinderUtil.findStationById(stationID); - if(getStation.getStatusCodeValue() != 200){ + if (getStation.getStatusCodeValue() != 200) { return getStation; } @@ -233,7 +251,7 @@ public class Controller { //Get Bearbeitet entry ResponseEntity getBearbeitet = FinderUtil.findBearbeitetByUserAndCache(user, cache); - if(getBearbeitet.getStatusCodeValue() != 200){ + if (getBearbeitet.getStatusCodeValue() != 200) { return getBearbeitet; } @@ -242,7 +260,7 @@ public class Controller { Station aktuelleStation = bearbeitet.getAktuelleStation(); - if(aktuelleStation == null){ + if (aktuelleStation == null) { return ResponseEntity.status(400).body("Database Error"); } @@ -290,17 +308,15 @@ public class Controller { @ResponseBody public ResponseEntity checkAdmin(@RequestParam String token) { - try { - Claims claims = Jwts.parser() //Parse JWT - .setSigningKey(VerificationUtil.publicKey) - .parseClaimsJws(token).getBody(); + ResponseEntity verifyToken = VerificationUtil.verifyToken(token); - return ResponseEntity.status(200).body(claims.get("admin")); - } catch (ExpiredJwtException e) { - return ResponseEntity.status(400).body("JWT Token expired"); - } catch (Exception e) { - return ResponseEntity.status(400).body("JWT Token invalid"); + if (verifyToken.getStatusCodeValue() != 200) { + return verifyToken; } + + Claims claims = (Claims) verifyToken.getBody(); + + return ResponseEntity.status(200).body(claims.get("admin")); } //Bis hier @@ -322,31 +338,35 @@ public class Controller { @RequestMapping("/api/getMyCaches") @ResponseBody 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) { - ArrayList bearbeitetList = new ArrayList<>(); + if (verifyToken.getStatusCodeValue() != 200) { + return verifyToken; + } - for (Bearbeitet bearbeitet : bearbeitetRepository.findAll()) { - if (bearbeitet.getUser().getId() == user.getId()) { - bearbeitetList.add(bearbeitet); - } + Claims claims = (Claims) verifyToken.getBody(); + + ResponseEntity getUser = FinderUtil.findUserByUsername(claims.getSubject()); + + if (getUser.getStatusCodeValue() != 200) { + return getUser; + } + + User user = (User) getUser.getBody(); + + if (user != null) { + ArrayList 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(400).body("JWT Token expired"); - } catch (Exception e) { - return ResponseEntity.status(400).body("JWT Token invalid"); + return ResponseEntity.status(200).body(new Gson().toJson(bearbeitetList)); + } else { + return ResponseEntity.status(404).body("User was not found in the database"); } } @@ -372,23 +392,29 @@ public class Controller { @RequestMapping("/api/getUser") @ResponseBody 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 (user != null) { - return ResponseEntity.status(200).body(new Gson().toJson(user)); - } else { - return ResponseEntity.status(404).body("User was not found in the database"); - } - } catch (ExpiredJwtException e) { - return ResponseEntity.status(400).body("JWT Token expired"); - } catch (Exception e) { - return ResponseEntity.status(400).body("JWT Token invalid"); + if (verifyToken.getStatusCodeValue() != 200) { + return verifyToken; + } + + Claims claims = (Claims) verifyToken.getBody(); + + ResponseEntity getUser = FinderUtil.findUserByUsername(claims.getSubject()); + + if (getUser.getStatusCodeValue() != 200) { + 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"); } } } + diff --git a/src/main/java/hhn/labsw/bugageocaching/util/FinderUtil.java b/src/main/java/hhn/labsw/bugageocaching/util/FinderUtil.java index d3590ae..e128a12 100644 --- a/src/main/java/hhn/labsw/bugageocaching/util/FinderUtil.java +++ b/src/main/java/hhn/labsw/bugageocaching/util/FinderUtil.java @@ -64,4 +64,14 @@ public class FinderUtil { 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); + } + }