Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Date
- import com.auth0.jwt.algorithms.Algorithm
- import com.auth0.jwt.interfaces.DecodedJWT
- import com.auth0.jwt.{JWT => Auth0JWT}
- import com.typesafe.config.Config
- import scala.util.Try
- object JWT {
- private def algorithm(implicit settings: JWTSettings): Algorithm = Algorithm.HMAC256(secret)
- private def secret(implicit settings: JWTSettings): String = settings.secret
- private def issuer(implicit settings: JWTSettings): String = settings.issuer
- private def expiresAt(issuedAt: Date)(implicit settings: JWTSettings): Date = new Date(issuedAt.getTime + settings.expiresAfter.toMillis)
- def create(subject: String)(implicit settings: JWTSettings): Try[String] = Try {
- val issuedAt = new Date()
- val token =
- Auth0JWT
- .create()
- .withIssuer(issuer)
- .withSubject(subject)
- .withIssuedAt(issuedAt)
- .withExpiresAt(expiresAt(issuedAt))
- .sign(algorithm)
- token
- }
- def verify(token: String)(implicit settings: JWTSettings): Try[DecodedJWT] = Try {
- val verifier =
- Auth0JWT
- .require(algorithm)
- .withIssuer(issuer)
- .build()
- verifier.verify(token)
- }
- }
- class JWTSettings(config: Config) {
- import utils.DurationExtensions._
- private val jwtConfig = config.getConfig("jwt")
- val secret = jwtConfig.getString("secret")
- val issuer = jwtConfig.getString("issuer")
- val expiresAfter = jwtConfig.getDuration("expires-after").toScala
- }
- object JWTSettings {
- def apply(config: Config): JWTSettings = new JWTSettings(config)
- }
Add Comment
Please, Sign In to add comment