This commit is contained in:
Maximilian Leopold 2019-04-15 13:33:29 +02:00
parent 43caf76471
commit b82bab1f8e
5 changed files with 72 additions and 55 deletions

View File

@ -3,6 +3,7 @@ package hhn.labsw.bugageocaching.controller;
import com.google.gson.Gson;
import hhn.labsw.bugageocaching.entities.*;
import hhn.labsw.bugageocaching.repositories.*;
import hhn.labsw.bugageocaching.util.VerificationUtil;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts;
@ -13,7 +14,6 @@ import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
import java.security.Key;
import java.util.*;
import static hhn.labsw.bugageocaching.util.CacheConstructionUtil.createCacheUtil;
@ -44,11 +44,10 @@ public class Controller {
@Autowired
UserRepository userRepository;
Key key;
@PostConstruct
public void init() {
key = fetchPublicKey();
fetchPublicKey();
}
@CrossOrigin(origins = "http://localhost:8081") // only for dev purpose
@ -78,12 +77,12 @@ public class Controller {
.setSubject(user.getUsername())
.claim("admin", userRepository.findByUsername(user.getUsername()).getRoles().stream().anyMatch(x -> x.getId() == 0)) //True if user is admin
.setExpiration(new Date(new Date().getTime() + (1000 * 60 * 60 * 24))) //One day expiration
.signWith(signatureAlgorithm, key)
.signWith(signatureAlgorithm, VerificationUtil.publicKey)
.compact();
System.out.println(token);
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(key)
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
System.out.println("ID: " + claims.getId());
System.out.println("Subject: " + claims.getSubject());
@ -109,7 +108,7 @@ public class Controller {
try {
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(key)
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
User user = userRepository.findByUsername(claims.getSubject());
@ -179,7 +178,7 @@ public class Controller {
try {
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(key)
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
return ResponseEntity.status(200).body(claims.get("admin"));
@ -212,7 +211,7 @@ public class Controller {
try {
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(key)
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();
@ -248,7 +247,7 @@ public class Controller {
User u = new User();
u.setId((int) obj[0]);
u.setUsername((String) obj[1]);
u.setRankingPointsSum((int) obj[2]);
//u.setRankingPointsSum((int) obj[2]);
sendBackUsers.add(u);
}
@ -261,7 +260,7 @@ public class Controller {
public ResponseEntity getUser(@RequestParam String token) {
try {
Claims claims = Jwts.parser() //Parse JWT
.setSigningKey(key)
.setSigningKey(VerificationUtil.publicKey)
.parseClaimsJws(token).getBody();

View File

@ -11,6 +11,7 @@ public class Role {
@GeneratedValue
private int id;
private String name;
private String domain;
public Role() {
@ -32,6 +33,14 @@ public class Role {
this.name = name;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
@Override
public String toString() {
return name;

View File

@ -15,10 +15,8 @@ public class User {
@GeneratedValue
private int id;
private String firstname;
private String lastname;
private String username;
private int rankingPointsSum;
private String email;
private String password;
@ -26,10 +24,6 @@ public class User {
@ManyToMany
private List<Role> roles;
@ManyToOne
private Team team;
@Transient
private String passwordConfirm;
@ -41,22 +35,6 @@ public class User {
this.id = id;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public String getUsername() {
return username;
}
@ -65,14 +43,6 @@ public class User {
this.username = username;
}
public int getRankingPointsSum() {
return rankingPointsSum;
}
public void setRankingPointsSum(int rankingPointsSum) {
this.rankingPointsSum = rankingPointsSum;
}
public String getEmail() {
return email;
}
@ -89,14 +59,6 @@ public class User {
this.password = password;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
public List<Role> getRoles() {
return roles;
}

View File

@ -0,0 +1,46 @@
package hhn.labsw.bugageocaching.entities;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table
public class User_Info implements Serializable {
@OneToOne
@Id
private User userID;
private int rankingPointsSum;
@ManyToOne
private Team teamID;
public User_Info() {
}
public User getUserID() {
return userID;
}
public void setUserID(User userID) {
this.userID = userID;
}
public int getRankingPointsSum() {
return rankingPointsSum;
}
public void setRankingPointsSum(int rankingPointsSum) {
this.rankingPointsSum = rankingPointsSum;
}
public Team getTeamID() {
return teamID;
}
public void setTeamID(Team teamID) {
this.teamID = teamID;
}
}

View File

@ -1,6 +1,8 @@
package hhn.labsw.bugageocaching.util;
import hhn.labsw.bugageocaching.fetchObjects.PublicKey;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import java.security.Key;
@ -10,7 +12,9 @@ import java.util.Base64;
public class VerificationUtil {
public static Key fetchPublicKey() {
public static Key publicKey;
public static void fetchPublicKey() {
RestTemplate restTemplate = new RestTemplate();
try {
PublicKey response = restTemplate.getForObject("http://seserver.se.hs-heilbronn.de:8090/buga19usermanagement/token/publickey", PublicKey.class);
@ -19,16 +23,13 @@ public class VerificationUtil {
X509EncodedKeySpec publicKeySpec = new X509EncodedKeySpec(decodedKey);
Key key = factory.generatePublic(publicKeySpec);
return key;
publicKey = key;
} catch (Exception e) {
e.printStackTrace();
}
//Fehler muss zurückgegeben werden
return null;
}
public void verifyToken() {
}
//Verify methode
}