From b73df49925f6942bf3689e1ba9c29e188f62fc3f Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Fri, 20 May 2022 00:15:49 +0600 Subject: [PATCH] fixes in auth --- .../features/auth/client/ModuleLoader.kt | 3 ++- .../features/auth/client/AuthView.kt | 2 +- .../AuthenticationRoutingConfigurator.kt | 2 +- .../features/common/common/DefaultModules.kt | 16 ++++++++++------ .../common/common/DefaultQualifiers.kt | 2 +- .../features/common/common/ModuleLoader.kt | 9 +++++++++ .../features/common/common/ui/fsm/UIFSM.kt | 2 -- .../ApplicationAuthenticationConfigurator.kt | 2 +- .../common/server/{sessions => }/Qualifiers.kt | 3 ++- .../{sessions => }/ServerModuleLoader.kt | 2 +- .../server/BinaryContentServerModuleLoader.kt | 4 ++-- .../server/TextContentServerModuleLoader.kt | 2 +- .../UsersRolesAuthenticationConfigurator.kt | 2 +- gradle/libs.versions.toml | 4 ++-- .../SimplePublicationTriggerLoaderServer.kt | 2 +- .../java/dev/inmo/postssystem/server/Config.kt | 2 +- .../java/dev/inmo/postssystem/server/DI.kt | 18 +++++++++++++++--- .../server/TelegramTargetServerModuleLoader.kt | 2 +- 18 files changed, 52 insertions(+), 27 deletions(-) rename features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/{sessions => }/ApplicationAuthenticationConfigurator.kt (88%) rename features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/{sessions => }/Qualifiers.kt (63%) rename features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/{sessions => }/ServerModuleLoader.kt (71%) diff --git a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ModuleLoader.kt b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ModuleLoader.kt index 7de13c6e..075f4a7d 100644 --- a/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ModuleLoader.kt +++ b/features/auth/client/src/commonMain/kotlin/dev/inmo/postssystem/features/auth/client/ModuleLoader.kt @@ -8,8 +8,9 @@ import dev.inmo.postssystem.features.auth.client.ui.* import dev.inmo.postssystem.features.common.common.* import dev.inmo.postssystem.features.common.common.ui.fsm.UIFSMExceptionHandler import dev.inmo.postssystem.features.common.common.ui.fsm.UIFSMState +import kotlin.js.JsExport -val defaultModuleLoader = DefaultModuleLoader { +internal fun CommonAuthModuleLoader() = DefaultModuleLoader { single { DefaultAuthSettings(get(DefaultQualifiers.SettingsQualifier), get(), getKoin(), get()) } singleWithRandomQualifier { diff --git a/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt b/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt index d625b2fa..7b2fc5fc 100644 --- a/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt +++ b/features/auth/client/src/jsMain/kotlin/dev/inmo/postssystem/features/auth/client/AuthView.kt @@ -29,7 +29,7 @@ val loader = DefaultModuleLoader { strictlyOn(get()) } } -} +} + CommonAuthModuleLoader() class AuthView( private val viewModel: AuthUIViewModel, diff --git a/features/auth/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/auth/server/AuthenticationRoutingConfigurator.kt b/features/auth/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/auth/server/AuthenticationRoutingConfigurator.kt index d3941409..7d39ed8d 100644 --- a/features/auth/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/auth/server/AuthenticationRoutingConfigurator.kt +++ b/features/auth/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/auth/server/AuthenticationRoutingConfigurator.kt @@ -2,7 +2,7 @@ package dev.inmo.postssystem.features.auth.server import dev.inmo.postssystem.features.auth.common.* import dev.inmo.postssystem.features.auth.server.tokens.AuthTokensService -import dev.inmo.postssystem.features.common.server.sessions.ApplicationAuthenticationConfigurator +import dev.inmo.postssystem.features.common.server.ApplicationAuthenticationConfigurator import dev.inmo.postssystem.features.users.common.User import dev.inmo.micro_utils.coroutines.safely import dev.inmo.micro_utils.ktor.server.* diff --git a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultModules.kt b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultModules.kt index ed3f8c1d..3b6ac7c7 100644 --- a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultModules.kt +++ b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultModules.kt @@ -49,12 +49,16 @@ fun baseKoin( single { repoFactory() } single { defaultScope } single(DefaultQualifiers.UIScopeQualifier) { get().LinkedSupervisorScope(Dispatchers.Main) } - single>(UIFSMQualifier) { UIFSM(get()) { (this@single to this@UIFSM).apply(get( - DefaultQualifiers.FSMHandlersBuilderQualifier - )) } } - - AdditionalModules.Default.modules.forEach { - it.apply { load() } + single>(DefaultQualifiers.UIFSMQualifier) { + UIFSM(get()) { + (this@single to this@UIFSM).apply(get(DefaultQualifiers.FSMHandlersBuilderQualifier)) + } + } + } + AdditionalModules.Default.modules.map { + module { + with(it) { + load() + } } } ) diff --git a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultQualifiers.kt b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultQualifiers.kt index 112d503d..1ee39296 100644 --- a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultQualifiers.kt +++ b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/DefaultQualifiers.kt @@ -6,5 +6,5 @@ object DefaultQualifiers { val SettingsQualifier = StringQualifier("Settings") val FSMHandlersBuilderQualifier = StringQualifier("FSMHandlersBuilder") val UIScopeQualifier = StringQualifier("CoroutineScopeUI") - val UIFSMQualifier = StringQualifier("FSM") + val UIFSMQualifier = StringQualifier("UIFSM") } diff --git a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ModuleLoader.kt b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ModuleLoader.kt index 653cbd49..62ec80fc 100644 --- a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ModuleLoader.kt +++ b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ModuleLoader.kt @@ -12,6 +12,15 @@ interface ModuleLoader { } } +operator fun ModuleLoader.plus(other: ModuleLoader) = ModuleLoader.ByCallback { + with(this@plus) { + load() + } + with (other) { + load() + } +} + fun DefaultModuleLoader(loadingBlock: Module.() -> Unit): ModuleLoader.ByCallback { val newModuleLoader = ModuleLoader.ByCallback(loadingBlock) AdditionalModules.Default.addModule(newModuleLoader) diff --git a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSM.kt b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSM.kt index ceec5541..39b09745 100644 --- a/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSM.kt +++ b/features/common/client/src/commonMain/kotlin/dev/inmo/postssystem/features/common/common/ui/fsm/UIFSM.kt @@ -6,8 +6,6 @@ import dev.inmo.micro_utils.fsm.common.managers.DefaultStatesManager import dev.inmo.micro_utils.fsm.common.managers.DefaultStatesManagerRepo import org.koin.core.qualifier.StringQualifier -val UIFSMQualifier = StringQualifier("UIFSM") - fun UIFSM( repo: DefaultStatesManagerRepo, handlersSetter: FSMBuilder.() -> Unit diff --git a/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/ApplicationAuthenticationConfigurator.kt b/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/ApplicationAuthenticationConfigurator.kt similarity index 88% rename from features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/ApplicationAuthenticationConfigurator.kt rename to features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/ApplicationAuthenticationConfigurator.kt index 8d61f75a..fa15c6ab 100644 --- a/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/ApplicationAuthenticationConfigurator.kt +++ b/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/ApplicationAuthenticationConfigurator.kt @@ -1,4 +1,4 @@ -package dev.inmo.postssystem.features.common.server.sessions +package dev.inmo.postssystem.features.common.server import dev.inmo.micro_utils.ktor.server.configurators.KtorApplicationConfigurator import io.ktor.server.application.Application diff --git a/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/Qualifiers.kt b/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/Qualifiers.kt similarity index 63% rename from features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/Qualifiers.kt rename to features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/Qualifiers.kt index 9d7953b9..fab60c7c 100644 --- a/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/Qualifiers.kt +++ b/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/Qualifiers.kt @@ -1,8 +1,9 @@ -package dev.inmo.postssystem.features.common.server.sessions +package dev.inmo.postssystem.features.common.server import org.koin.core.qualifier.StringQualifier object Qualifiers { val filesFolderQualifier = StringQualifier("filesFolder") + val commonFilesFolderQualifier = StringQualifier("commonFilesFolder") val usersRolesKeyValueFactoryQualifier = StringQualifier("usersRolesKeyValueFactory") } diff --git a/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/ServerModuleLoader.kt b/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/ServerModuleLoader.kt similarity index 71% rename from features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/ServerModuleLoader.kt rename to features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/ServerModuleLoader.kt index d3e2ee87..96706edd 100644 --- a/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/sessions/ServerModuleLoader.kt +++ b/features/common/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/common/server/ServerModuleLoader.kt @@ -1,4 +1,4 @@ -package dev.inmo.postssystem.features.common.server.sessions +package dev.inmo.postssystem.features.common.server import kotlinx.serialization.json.JsonObject import org.koin.core.module.Module diff --git a/features/content/binary/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/binary/server/BinaryContentServerModuleLoader.kt b/features/content/binary/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/binary/server/BinaryContentServerModuleLoader.kt index e59e7034..a07b4f15 100644 --- a/features/content/binary/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/binary/server/BinaryContentServerModuleLoader.kt +++ b/features/content/binary/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/binary/server/BinaryContentServerModuleLoader.kt @@ -3,8 +3,8 @@ package dev.inmo.postssystem.features.content.binary.server import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedKeyValueRepo import dev.inmo.postssystem.features.common.common.singleWithBinds import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier -import dev.inmo.postssystem.features.common.server.sessions.Qualifiers -import dev.inmo.postssystem.features.common.server.sessions.ServerModuleLoader +import dev.inmo.postssystem.features.common.server.Qualifiers +import dev.inmo.postssystem.features.common.server.ServerModuleLoader import dev.inmo.postssystem.features.content.common.BinaryContent import dev.inmo.postssystem.features.content.server.ServerContentStorageWrapper import dev.inmo.postssystem.features.files.common.* diff --git a/features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextContentServerModuleLoader.kt b/features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextContentServerModuleLoader.kt index bcc327b3..15acfbd0 100644 --- a/features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextContentServerModuleLoader.kt +++ b/features/content/text/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/content/text/server/TextContentServerModuleLoader.kt @@ -1,7 +1,7 @@ package dev.inmo.postssystem.features.content.text.server import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier -import dev.inmo.postssystem.features.common.server.sessions.ServerModuleLoader +import dev.inmo.postssystem.features.common.server.ServerModuleLoader import dev.inmo.postssystem.features.content.common.ContentSerializersModuleConfigurator import dev.inmo.postssystem.features.content.server.ServerContentStorageWrapper import dev.inmo.postssystem.features.content.text.common.TextContent diff --git a/features/roles/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/server/UsersRolesAuthenticationConfigurator.kt b/features/roles/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/server/UsersRolesAuthenticationConfigurator.kt index cb502bd9..979680cd 100644 --- a/features/roles/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/server/UsersRolesAuthenticationConfigurator.kt +++ b/features/roles/server/src/jvmMain/kotlin/dev/inmo/postssystem/features/roles/server/UsersRolesAuthenticationConfigurator.kt @@ -3,7 +3,7 @@ package dev.inmo.postssystem.features.roles.server import dev.inmo.postssystem.features.auth.common.AuthToken import dev.inmo.postssystem.features.auth.server.principal import dev.inmo.postssystem.features.auth.server.tokens.AuthTokensService -import dev.inmo.postssystem.features.common.server.sessions.ApplicationAuthenticationConfigurator +import dev.inmo.postssystem.features.common.server.ApplicationAuthenticationConfigurator import dev.inmo.postssystem.features.roles.common.Role import dev.inmo.postssystem.features.roles.common.RolesStorage import io.ktor.http.HttpStatusCode diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dc3fe11d..cea15cdd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,9 +2,9 @@ kotlin = "1.6.21" kotlin-serialization = "1.3.3" -jsuikit = "0.1.1" +jsuikit = "0.1.3" compose = "1.2.0-alpha01-dev686" -microutils = "0.10.4" +microutils = "0.10.5" tgbotapi = "1.1.2" ktor = "2.0.1" klock = "2.7.0" diff --git a/publicators/simple/server/src/jvmMain/kotlin/dev/inmo/postssystem/publicators/simple/server/SimplePublicationTriggerLoaderServer.kt b/publicators/simple/server/src/jvmMain/kotlin/dev/inmo/postssystem/publicators/simple/server/SimplePublicationTriggerLoaderServer.kt index abc0b0fa..3e009a2b 100644 --- a/publicators/simple/server/src/jvmMain/kotlin/dev/inmo/postssystem/publicators/simple/server/SimplePublicationTriggerLoaderServer.kt +++ b/publicators/simple/server/src/jvmMain/kotlin/dev/inmo/postssystem/publicators/simple/server/SimplePublicationTriggerLoaderServer.kt @@ -2,7 +2,7 @@ package dev.inmo.postssystem.publicators.simple.server import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier -import dev.inmo.postssystem.features.common.server.sessions.ServerModuleLoader +import dev.inmo.postssystem.features.common.server.ServerModuleLoader import kotlinx.serialization.json.JsonObject import org.koin.core.module.Module diff --git a/server/src/main/java/dev/inmo/postssystem/server/Config.kt b/server/src/main/java/dev/inmo/postssystem/server/Config.kt index 24c60d29..83513b19 100644 --- a/server/src/main/java/dev/inmo/postssystem/server/Config.kt +++ b/server/src/main/java/dev/inmo/postssystem/server/Config.kt @@ -1,6 +1,6 @@ package dev.inmo.postssystem.server -import dev.inmo.postssystem.features.common.server.sessions.ServerModuleLoader +import dev.inmo.postssystem.features.common.server.ServerModuleLoader import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import java.io.File diff --git a/server/src/main/java/dev/inmo/postssystem/server/DI.kt b/server/src/main/java/dev/inmo/postssystem/server/DI.kt index e3bdacf5..4e4b7f7b 100644 --- a/server/src/main/java/dev/inmo/postssystem/server/DI.kt +++ b/server/src/main/java/dev/inmo/postssystem/server/DI.kt @@ -3,10 +3,9 @@ package dev.inmo.postssystem.server import dev.inmo.postssystem.features.auth.server.AuthenticationRoutingConfigurator import dev.inmo.postssystem.features.auth.server.SessionAuthenticationConfigurator import dev.inmo.postssystem.features.auth.server.tokens.* -import dev.inmo.postssystem.features.common.server.sessions.ApplicationAuthenticationConfigurator +import dev.inmo.postssystem.features.common.server.ApplicationAuthenticationConfigurator import dev.inmo.postssystem.features.files.common.* import dev.inmo.postssystem.features.files.common.storage.* -import dev.inmo.postssystem.features.files.common.storage.WriteFilesStorage import dev.inmo.postssystem.features.files.server.FilesRoutingConfigurator import dev.inmo.postssystem.features.roles.common.* import dev.inmo.postssystem.features.roles.common.keyvalue.KeyValuesRolesOriginalRepo @@ -25,7 +24,7 @@ import dev.inmo.micro_utils.ktor.server.createKtorServer import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedKeyValueRepo import dev.inmo.micro_utils.repos.exposed.onetomany.ExposedOneToManyKeyValueRepo import dev.inmo.postssystem.features.common.common.* -import dev.inmo.postssystem.features.common.server.sessions.Qualifiers +import dev.inmo.postssystem.features.common.server.Qualifiers import dev.inmo.postssystem.features.content.common.* import dev.inmo.postssystem.features.content.server.ServerContentStorageAggregator import dev.inmo.postssystem.features.content.server.storage.* @@ -49,6 +48,7 @@ import org.jetbrains.exposed.sql.Database import org.koin.core.module.Module import org.koin.core.parameter.ParametersHolder import org.koin.core.qualifier.StringQualifier +import org.koin.core.qualifier.named import org.koin.dsl.* import java.io.File @@ -94,6 +94,7 @@ fun getDIModule( singleWithBinds { get().databaseConfig } singleWithBinds { get().authConfig } singleWithBinds(Qualifiers.filesFolderQualifier) { get().filesFolderFile } + singleWithBinds(Qualifiers.commonFilesFolderQualifier) { File(get().filesFolderFile, "common").apply { mkdirs() } } singleWithBinds { get().database } singleWithBinds { ExposedUsersStorage(get()) } @@ -141,6 +142,17 @@ fun getDIModule( ) } + singleWithBinds { + val metasRepo = MetasKeyValueRepo( + get(), + ExposedKeyValueRepo(get(), { text("fileid") }, { text("metaInfo") }, "CommonFilesMetaInfoTable") + ) + DefaultFilesStorage( + DiskReadFilesStorage(get(Qualifiers.commonFilesFolderQualifier), metasRepo), + WriteDistFilesStorage(get(Qualifiers.commonFilesFolderQualifier), metasRepo) + ) + } + // Routing configurators singleWithBinds { FilesRoutingConfigurator(get(), null, get()) } singleWithBinds { StatusRoutingConfigurator } diff --git a/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/TelegramTargetServerModuleLoader.kt b/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/TelegramTargetServerModuleLoader.kt index 770e1afe..d0cddee8 100644 --- a/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/TelegramTargetServerModuleLoader.kt +++ b/targets/telegram/loader/server/src/jvmMain/kotlin/dev/inmo/postssystem/targets/telegram/loader/server/TelegramTargetServerModuleLoader.kt @@ -1,7 +1,7 @@ package dev.inmo.postssystem.targets.telegram.loader.server import dev.inmo.postssystem.features.common.common.singleWithRandomQualifier -import dev.inmo.postssystem.features.common.server.sessions.ServerModuleLoader +import dev.inmo.postssystem.features.common.server.ServerModuleLoader import dev.inmo.postssystem.features.content.common.ContentSerializersModuleConfigurator import dev.inmo.postssystem.features.publication.server.PublicationTarget import dev.inmo.postssystem.targets.telegram.content.polls.common.PollContent