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