progress
This commit is contained in:
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.getCover
|
||||||
import net.keinekekse.app.books.scan.getIsbnFromCalibre
|
import net.keinekekse.app.books.scan.getIsbnFromCalibre
|
||||||
import net.keinekekse.app.books.ui.*
|
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.auth.UserRoles
|
||||||
import net.keinekekse.app.core.config.KeycloakSession
|
import net.keinekekse.app.core.config.KeycloakSession
|
||||||
import net.keinekekse.app.core.config.onUnauthorized
|
import net.keinekekse.app.core.config.onUnauthorized
|
||||||
@@ -32,6 +33,7 @@ fun Application.configureRouting(
|
|||||||
@Named("booksDb") db: Database,
|
@Named("booksDb") db: Database,
|
||||||
booksRepo: BookRepository,
|
booksRepo: BookRepository,
|
||||||
keycloakSession: KeycloakSession,
|
keycloakSession: KeycloakSession,
|
||||||
|
sessions: Sessions,
|
||||||
// resultCallback: (String, String) -> Unit,
|
// resultCallback: (String, String) -> Unit,
|
||||||
) {
|
) {
|
||||||
log.info("Configuring books routing")
|
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.server.sessions.*
|
||||||
import io.ktor.utils.io.*
|
import io.ktor.utils.io.*
|
||||||
import net.keinekekse.app.core.auth.AppPrincipal
|
import net.keinekekse.app.core.auth.AppPrincipal
|
||||||
|
import net.keinekekse.app.core.auth.Sessions
|
||||||
import net.keinekekse.app.core.auth.UserRoles
|
import net.keinekekse.app.core.auth.UserRoles
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.security.SecureRandom
|
import java.security.SecureRandom
|
||||||
@@ -191,6 +192,7 @@ suspend fun Application.configureSecurity() {
|
|||||||
dependencies {
|
dependencies {
|
||||||
provide<OidcProvider> { keycloakIdentity }
|
provide<OidcProvider> { keycloakIdentity }
|
||||||
provide<KeycloakSession> { keycloakSession }
|
provide<KeycloakSession> { keycloakSession }
|
||||||
|
provide<Sessions> { Sessions() }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user