diff --git a/server/build.gradle.kts b/server/build.gradle.kts index 04ba977a..4e11d4a8 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -251,4 +251,8 @@ tasks { processResources { dependsOn(":server:server-config-generate:generateSettings") } + + processTestResources { + dependsOn(":server:server-config-generate:generateSettings") + } } diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/ApolloSubscriptionProtocolHandler.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/ApolloSubscriptionProtocolHandler.kt index 38a0ef76..b3f0d494 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/ApolloSubscriptionProtocolHandler.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/subscriptions/ApolloSubscriptionProtocolHandler.kt @@ -155,7 +155,10 @@ class ApolloSubscriptionProtocolHandler( ): Flow { @Suppress("UNCHECKED_CAST") val user = - context.getAttributeOrSet(Attribute.TachideskUser) { + context.getAttributeOrSet( + Attribute.TachideskUser, + replaceIf = { it == UserType.Visitor }, + ) { val payload = operationMessage.payload as? Map val token = payload?.let { it[Header.AUTHORIZATION] as? String } getUserFromToken(token) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt index c88bb1e8..51f164db 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/JavalinSetup.kt @@ -319,8 +319,15 @@ object JavalinSetup { fun WsContext.getAttributeOrSet( attribute: Attribute, + replaceIf: (T) -> Boolean = { false }, set: () -> T, - ): T = - attribute(attribute.name) - ?: set().also { setAttribute(attribute, it) } + ): T { + var item: T? = attribute(attribute.name) + + if (item != null && replaceIf(item)) { + item = null + } + + return item ?: set().also { setAttribute(attribute, it) } + } }