33 lines
1 KiB
Kotlin
33 lines
1 KiB
Kotlin
package com.oliver.kidio.backend.security
|
|
|
|
import com.auth0.jwt.JWT
|
|
import com.auth0.jwt.JWTVerifier
|
|
import com.auth0.jwt.algorithms.Algorithm
|
|
import java.util.Date
|
|
|
|
class JwtService(
|
|
private val secret: String = System.getenv("JWT_SECRET") ?: "super-geheimes-secret-fuer-dev",
|
|
private val issuer: String = "https://kidio.oliver.com/",
|
|
private val audience: String = "kidio-users",
|
|
private val expirationInMs: Long = java.util.concurrent.TimeUnit.DAYS.toMillis(30) // 30 Tage
|
|
) {
|
|
|
|
val verifier: JWTVerifier = JWT
|
|
.require(Algorithm.HMAC256(secret))
|
|
.withAudience(audience)
|
|
.withIssuer(issuer)
|
|
.build()
|
|
|
|
/**
|
|
* Generiert ein JWT-Token für einen bestimmten Benutzer.
|
|
*/
|
|
fun generateToken(userId: String): String {
|
|
return JWT.create()
|
|
.withAudience(audience)
|
|
.withIssuer(issuer)
|
|
.withClaim("userId", userId)
|
|
.withExpiresAt(Date(System.currentTimeMillis() + expirationInMs))
|
|
.sign(Algorithm.HMAC256(secret))
|
|
}
|
|
}
|