SimpleNotes/api/src/controllers/base/AuthCrudController.kt

39 lines
983 B
Kotlin

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<UserService>()
fun ApplicationCall.userEmail(): String =
this.principal<UserIdPrincipal>()!!.name
fun ApplicationCall.userId(): Int =
userService.getUserId(userEmail())!!
abstract fun Routing.registerAuthRoutes()
override fun Routing.registerRoutes() {
authenticate {
route(path) {
this@registerRoutes.registerAuthRoutes()
}
}
}
}