Skip to content
Snippets Groups Projects
Commit 7bdacdfc authored by Tucker Gary Siegel's avatar Tucker Gary Siegel
Browse files

add new functions

parent f9a4ccf0
No related branches found
No related tags found
No related merge requests found
package edu.umd.dawn.common.jwt;
import com.auth0.jwt.JWTCreator.Builder;
import com.auth0.jwt.interfaces.DecodedJWT;
import edu.umd.dawn.common.entities.User;
import lombok.AllArgsConstructor;
import lombok.Getter;
......@@ -17,4 +20,13 @@ public class Claims {
public static Claims build(DecodedJWT jwt) {
return new Claims(jwt.getClaim("id").asString());
}
public static Claims fromUser(User user) {
return new Claims(user.getId());
}
public Builder fill(Builder jwtBuilder) {
jwtBuilder.withClaim("id", this.userId);
return jwtBuilder;
}
}
package edu.umd.dawn.common.jwt;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.temporal.ChronoUnit;
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import edu.umd.dawn.common.entities.User;
import edu.umd.dawn.common.exceptions.BaseExceptions;
import edu.umd.dawn.common.exceptions.DawnException;
import lombok.Getter;
......@@ -22,6 +29,11 @@ public class JWTUtil {
decode();
}
public JWTUtil(String accessSecret) {
this.accessSecret = accessSecret;
initAlgorithm();
}
private void initAlgorithm() {
this.algorithm = Algorithm.HMAC256(accessSecret);
}
......@@ -39,6 +51,16 @@ public class JWTUtil {
}
}
private String create(Claims claims, int expMin) {
try {
String token = claims.fill(JWT.create()
.withIssuer("dawn")).withExpiresAt(LocalDateTime.now().plus(expMin, ChronoUnit.MINUTES).toInstant(ZoneOffset.UTC)).sign(algorithm);
return token;
} catch (Exception e) {
throw new DawnException(BaseExceptions.INVALID_JWT, e);
}
}
public Claims getClaims() {
return Claims.build(this);
}
......@@ -46,4 +68,19 @@ public class JWTUtil {
public static JWTUtil parse(String accessSecret, String jwt) {
return new JWTUtil(accessSecret, jwt);
}
public static String issue(String accessSecret, Claims claims) {
JWTUtil util = new JWTUtil(accessSecret);
return util.create(claims, 20); // eventually move 20 to be a variable
}
public static String issue(String accessSecret, Claims claims, int expTime) {
JWTUtil util = new JWTUtil(accessSecret);
return util.create(claims, expTime);
}
public static String issue(String accessSecret, User user, int expTime) {
JWTUtil util = new JWTUtil(accessSecret);
return util.create(Claims.fromUser(user), expTime);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment