This commit is contained in:
Hartmut Bauer committed 2026-10-12 23:58:20 +02:00
1 parent 6ab9a59597
commit 8976e25499
4 files changed
+71

No files matched your search

@@ -20,6 +20,7 @@ import net.keinekekse.app.books.db.schema.emptyBook
import net.keinekekse.app.books.scan.getCover
import net.keinekekse.app.books.scan.getIsbnFromCalibre
import net.keinekekse.app.books.ui.*
import net.keinekekse.app.core.auth.Sessions
import net.keinekekse.app.core.auth.UserRoles
import net.keinekekse.app.core.config.KeycloakSession
import net.keinekekse.app.core.config.onUnauthorized
@@ -32,6 +33,7 @@ fun Application.configureRouting(
@Named("booksDb") db: Database,
booksRepo: BookRepository,
keycloakSession: KeycloakSession,
sessions: Sessions,
// resultCallback: (String, String) -> Unit,
) {
log.info("Configuring books routing")
@@ -0,0 +1,14 @@
package net.keinekekse.app.books.edit
import net.keinekekse.app.core.auth.UserSession
class BooksSession(
override val userId: String,
override val sessionId: String,
override var data: BooksSessionData
) : UserSession<BooksSessionData>
class BooksSessionData() {
}
@@ -0,0 +1,53 @@
package net.keinekekse.app.core.auth
import kotlin.uuid.ExperimentalUuidApi
import kotlin.uuid.Uuid
class Sessions {
var sessions: MutableMap<String, MutableMap<String, UserSession<*>>> = mutableMapOf()
@OptIn(ExperimentalUuidApi::class)
fun newSessionId(): String {
return Uuid.generateV4().toHexDashString()
}
fun getUserSessions(uid: String): MutableMap<String, UserSession<*>>? {
return sessions.get(uid)
}
fun getUserSession(uid: String, sessionId: String): UserSession<*>? {
return sessions.get(uid)?.get(sessionId)
}
fun setUserSession(uid: String, sessionId: String, data: UserSession<*>) {
sessions.getOrPut(uid) { mutableMapOf() }[sessionId] = data
}
// fun addSession(uid: String) {
// sessions[uid] = BooksSession(uid, "", "")
// }
//
// fun addTestSession(uid: String) {
// sessions[uid] = TestSession(uid, "", 0)
// }
}
interface UserSession<T> {
val userId: String
val sessionId: String
var data: T
}
//data class BooksSession(
// override val userId: String,
// override val sessionId: String,
// override var data: String,
//) : UserSession<String>
//
//data class TestSession(
// override val userId: String,
// override val sessionId: String,
// override var data: Int,
//) : UserSession<Int>
@@ -8,6 +8,7 @@ import io.ktor.server.response.*
import io.ktor.server.sessions.*
import io.ktor.utils.io.*
import net.keinekekse.app.core.auth.AppPrincipal
import net.keinekekse.app.core.auth.Sessions
import net.keinekekse.app.core.auth.UserRoles
import java.io.File
import java.security.SecureRandom
@@ -191,6 +192,7 @@ suspend fun Application.configureSecurity() {
dependencies {
provide<OidcProvider> { keycloakIdentity }
provide<KeycloakSession> { keycloakSession }
provide<Sessions> { Sessions() }
}
}