workin on JWT Emmiter and trying to understand how zio handles exceptions
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
parent
d1d9fa22dc
commit
ac49d60f31
@ -1,12 +0,0 @@
|
|||||||
package org.tbasket.jwt
|
|
||||||
|
|
||||||
import zio.Task
|
|
||||||
import zio.http.{Request, Response}
|
|
||||||
|
|
||||||
object JwtGeneration {
|
|
||||||
|
|
||||||
def generateTokenResponse(request: Request): Task[Response] = {
|
|
||||||
???
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,35 @@
|
|||||||
|
package org.tbasket.jwt
|
||||||
|
|
||||||
|
import pdi.jwt.*
|
||||||
|
import zio.*
|
||||||
|
import zio.http.{Request, Response}
|
||||||
|
import zio.json.*
|
||||||
|
import zio.json.ast.Json
|
||||||
|
|
||||||
|
import java.lang.System.currentTimeMillis
|
||||||
|
import java.nio.file.*
|
||||||
|
import java.security.Key
|
||||||
|
import java.security.interfaces.RSAPrivateKey
|
||||||
|
import java.security.spec.PKCS8EncodedKeySpec
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
import java.util.{Date, UUID}
|
||||||
|
import javax.crypto.SecretKey
|
||||||
|
import scala.concurrent.duration
|
||||||
|
|
||||||
|
object JwtGenerator:
|
||||||
|
|
||||||
|
private val ExpirationDate = Duration(15, TimeUnit.DAYS).toMillis
|
||||||
|
private val Key = Files.readString(Path.of("id_rsa"))
|
||||||
|
|
||||||
|
private def claims(content: String) = JwtClaim(
|
||||||
|
expiration = Some(currentTimeMillis() + ExpirationDate),
|
||||||
|
issuedAt = Some(currentTimeMillis()),
|
||||||
|
jwtId = Some(UUID.randomUUID().toString),
|
||||||
|
content = content
|
||||||
|
)
|
||||||
|
|
||||||
|
def generateTokenResponse(request: Request): Task[Response] =
|
||||||
|
for
|
||||||
|
claims <- request.body.asString.map(claims)
|
||||||
|
jwt <- ZIO.attempt(JwtZIOJson.encode(claims, Key, JwtAlgorithm.RS256))
|
||||||
|
yield Response.json(jwt)
|
Reference in new issue