This is ugly..

This commit is contained in:
Hubert Van De Walle 2020-04-21 16:06:53 +02:00
parent 1f9923dc82
commit 69c35d0732
8 changed files with 81 additions and 78 deletions

View File

@ -7,11 +7,14 @@ import be.vandewalleh.migrations.Migration
import be.vandewalleh.routing.registerRoutes import be.vandewalleh.routing.registerRoutes
import be.vandewalleh.services.serviceModule import be.vandewalleh.services.serviceModule
import io.ktor.application.Application import io.ktor.application.Application
import io.ktor.application.call
import io.ktor.application.feature import io.ktor.application.feature
import io.ktor.application.log import io.ktor.application.log
import io.ktor.response.respond
import io.ktor.routing.Route import io.ktor.routing.Route
import io.ktor.routing.Routing import io.ktor.routing.Routing
import io.ktor.routing.RoutingPath.Companion.root import io.ktor.routing.RoutingPath.Companion.root
import io.ktor.routing.get
import io.ktor.routing.routing import io.ktor.routing.routing
import me.liuwj.ktorm.database.Database import me.liuwj.ktorm.database.Database
import org.kodein.di.Kodein import org.kodein.di.Kodein

View File

@ -11,7 +11,7 @@ import org.kodein.di.generic.instance
fun Application.authenticationModule() { fun Application.authenticationModule() {
install(Authentication) { install(Authentication) {
jwt { jwt {
val simpleJwt: SimpleJWT by kodein.instance() val simpleJwt by kodein.instance<SimpleJWT>()
verifier(simpleJwt.verifier) verifier(simpleJwt.verifier)
validate { validate {
UserIdPrincipal(it.payload.getClaim("name").asString()) UserIdPrincipal(it.payload.getClaim("name").asString())

View File

@ -1,8 +1,14 @@
package be.vandewalleh.routing package be.vandewalleh.routing
import io.ktor.auth.authenticate
import io.ktor.routing.Routing import io.ktor.routing.Routing
import io.ktor.routing.route
import org.kodein.di.Kodein import org.kodein.di.Kodein
fun Routing.chapters(kodein: Kodein) { fun Routing.chapters(kodein: Kodein) {
authenticate {
route("/notes/{noteTitle}/chapters/{chapterNumber}") {
}
}
} }

View File

@ -9,6 +9,7 @@ import io.ktor.request.receive
import io.ktor.response.respond import io.ktor.response.respond
import io.ktor.routing.Routing import io.ktor.routing.Routing
import io.ktor.routing.post import io.ktor.routing.post
import io.ktor.routing.route
import org.kodein.di.Kodein import org.kodein.di.Kodein
import org.kodein.di.generic.instance import org.kodein.di.generic.instance
import org.mindrot.jbcrypt.BCrypt import org.mindrot.jbcrypt.BCrypt
@ -19,6 +20,7 @@ fun Routing.login(kodein: Kodein) {
data class TokenResponse(val token: String) data class TokenResponse(val token: String)
route("/login"){
post { post {
val credential = call.receive<UsernamePasswordCredential>() val credential = call.receive<UsernamePasswordCredential>()
@ -31,5 +33,7 @@ fun Routing.login(kodein: Kodein) {
return@post call.respond(TokenResponse(simpleJwt.sign(email))) return@post call.respond(TokenResponse(simpleJwt.sign(email)))
} }
}
} }

View File

@ -3,6 +3,7 @@ package be.vandewalleh.routing
import be.vandewalleh.extensions.userId import be.vandewalleh.extensions.userId
import be.vandewalleh.services.NotesService import be.vandewalleh.services.NotesService
import io.ktor.application.call import io.ktor.application.call
import io.ktor.auth.authenticate
import io.ktor.response.respond import io.ktor.response.respond
import io.ktor.routing.Routing import io.ktor.routing.Routing
import io.ktor.routing.get import io.ktor.routing.get
@ -12,9 +13,11 @@ import org.kodein.di.generic.instance
fun Routing.notes(kodein: Kodein) { fun Routing.notes(kodein: Kodein) {
val notesService by kodein.instance<NotesService>() val notesService by kodein.instance<NotesService>()
get { authenticate {
get("/notes") {
val userId = call.userId() val userId = call.userId()
val notes = notesService.getNotes(userId) val notes = notesService.getNotes(userId)
call.respond(notes) call.respond(notes)
} }
}
} }

View File

@ -16,7 +16,7 @@ import org.mindrot.jbcrypt.BCrypt
fun Routing.register(kodein: Kodein) { fun Routing.register(kodein: Kodein) {
val userService by kodein.instance<UserService>() val userService by kodein.instance<UserService>()
post { post("/register") {
val user = call.receive<UserRegistrationDto>() val user = call.receive<UserRegistrationDto>()
if (userService.userExists(user.username, user.email)) if (userService.userExists(user.username, user.email))

View File

@ -1,30 +1,12 @@
package be.vandewalleh.routing package be.vandewalleh.routing
import io.ktor.auth.authenticate
import io.ktor.routing.Routing import io.ktor.routing.Routing
import io.ktor.routing.route
import org.kodein.di.Kodein import org.kodein.di.Kodein
fun Routing.registerRoutes(kodein: Kodein) { fun Routing.registerRoutes(kodein: Kodein) {
route("/login") { login(kodein)
this@registerRoutes.login(kodein) register(kodein)
} notes(kodein)
title(kodein)
route("/register") { chapters(kodein)
this@registerRoutes.register(kodein)
}
authenticate {
route("/notes") {
this@registerRoutes.notes(kodein)
route("/{noteTitle}") {
this@registerRoutes.title(kodein)
route("/chapters/{chapterNumber}") {
this@registerRoutes.chapters(kodein)
}
}
}
}
} }

View File

@ -3,6 +3,7 @@ package be.vandewalleh.routing
import be.vandewalleh.extensions.* import be.vandewalleh.extensions.*
import be.vandewalleh.services.NotesService import be.vandewalleh.services.NotesService
import io.ktor.application.call import io.ktor.application.call
import io.ktor.auth.authenticate
import io.ktor.http.HttpStatusCode import io.ktor.http.HttpStatusCode
import io.ktor.response.respond import io.ktor.response.respond
import io.ktor.routing.* import io.ktor.routing.*
@ -12,6 +13,8 @@ import org.kodein.di.generic.instance
fun Routing.title(kodein: Kodein) { fun Routing.title(kodein: Kodein) {
val notesService by kodein.instance<NotesService>() val notesService by kodein.instance<NotesService>()
authenticate {
route("/notes/{noteTitle}") {
post { post {
val userId = call.userId() val userId = call.userId()
val title = call.parameters.noteTitle() val title = call.parameters.noteTitle()
@ -56,4 +59,6 @@ fun Routing.title(kodein: Kodein) {
notesService.deleteNote(noteId) notesService.deleteNote(noteId)
call.respondStatus(HttpStatusCode.OK) call.respondStatus(HttpStatusCode.OK)
} }
}
}
} }