From e8ce65fbd18c1cd7fc106b6717321a151db01bc0 Mon Sep 17 00:00:00 2001 From: Daniel Svitan Date: Sun, 11 May 2025 17:45:43 +0200 Subject: [PATCH] :postbox: Adds auth routing --- backend/src/main/kotlin/plugins/Routing.kt | 3 ++ backend/src/main/kotlin/routes/Auth.kt | 41 ++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 backend/src/main/kotlin/routes/Auth.kt diff --git a/backend/src/main/kotlin/plugins/Routing.kt b/backend/src/main/kotlin/plugins/Routing.kt index d1ad409..f56e1ba 100644 --- a/backend/src/main/kotlin/plugins/Routing.kt +++ b/backend/src/main/kotlin/plugins/Routing.kt @@ -1,5 +1,6 @@ package dev.svitan.plugins +import dev.svitan.routes.routeAuth import io.ktor.http.* import io.ktor.server.application.* import io.ktor.server.plugins.requestvalidation.* @@ -28,4 +29,6 @@ fun Application.configureRouting() { call.respond("Hello World!") } } + + routeAuth() } diff --git a/backend/src/main/kotlin/routes/Auth.kt b/backend/src/main/kotlin/routes/Auth.kt new file mode 100644 index 0000000..e622fc5 --- /dev/null +++ b/backend/src/main/kotlin/routes/Auth.kt @@ -0,0 +1,41 @@ +package dev.svitan.routes + +import dev.svitan.schemas.AuthService +import dev.svitan.schemas.NewAuthDTO +import io.ktor.http.HttpStatusCode +import io.ktor.server.application.Application +import io.ktor.server.auth.authentication +import io.ktor.server.plugins.NotFoundException +import io.ktor.server.request.receive +import io.ktor.server.response.respond +import io.ktor.server.routing.* +import java.util.UUID + +fun Application.routeAuth() { + routing { + authentication { + get("/auth") { + call.respond(AuthService.readAll()) + } + + put("/auth") { + val auth = call.receive() + call.respond(HttpStatusCode.Created, AuthService.create(auth)) + } + + get("/auth/{id}") { + val idRaw = call.parameters["id"] ?: throw IllegalArgumentException("Invalid id") + val id = UUID.fromString(idRaw) + val auth = AuthService.read(id) ?: throw NotFoundException() + call.respond(auth) + } + + delete("/auth/{id}") { + val idRaw = call.parameters["id"] ?: throw IllegalArgumentException("Invalid id") + val id = UUID.fromString(idRaw) + AuthService.delete(id) + call.respond(HttpStatusCode.NoContent) + } + } + } +}