package be.vandewalleh.controllers.base import be.vandewalleh.services.UserService import io.ktor.application.ApplicationCall import io.ktor.auth.UserIdPrincipal import io.ktor.auth.authenticate import io.ktor.auth.principal import io.ktor.routing.Route import io.ktor.routing.Routing import io.ktor.routing.route import org.kodein.di.Kodein import org.kodein.di.generic.instance abstract class AuthCrudController( private val path: String, override val kodein: Kodein ) : KodeinController(kodein) { private val userService by instance() fun ApplicationCall.userEmail(): String = this.principal()!!.name fun ApplicationCall.userId(): Int = userService.getUserId(userEmail())!! abstract fun Routing.registerAuthRoutes() override fun Routing.registerRoutes() { authenticate { route(path) { this@registerRoutes.registerAuthRoutes() } } } }