package fr.dcproject import com.auth0.jwt.JWT import com.auth0.jwt.JWTVerifier import com.auth0.jwt.algorithms.Algorithm import com.typesafe.config.ConfigFactory import fr.dcproject.entity.User import java.io.File import java.util.* class Config { private var config = ConfigFactory.load() val sqlFiles = File(this::class.java.getResource("/sql").toURI()) val envName: String = config.getString("app.envName") val host: String = config.getString("db.host") var database: String = config.getString("db.database") var username: String = config.getString("db.username") var password: String = config.getString("db.password") val port: Int = config.getInt("db.port") } object JwtConfig { const val secret = "zAP5MBA4B4Ijz0MZaS48" private const val issuer = "dc-project.fr" private const val validityInMs = 36_000_00 * 10 // 10 hours // TODO change to RSA512 private val algorithm = Algorithm.HMAC512(secret) val verifier: JWTVerifier = JWT .require(algorithm) .withIssuer(issuer) .build() /** * Produce a token for this combination of User and Account */ fun makeToken(user: User): String = JWT.create() .withSubject("Authentication") .withIssuer(issuer) .withClaim("id", user.id.toString()) .withExpiresAt(getExpiration()) .sign(algorithm) /** * Calculate the expiration Date based on current time + the given validity */ private fun getExpiration() = Date(System.currentTimeMillis() + validityInMs) }