![JAR search and dependency download from the Maven repository](/logo.png)
commonMain.com.paoapps.fifi.auth.di.Koin.kt Maven / Gradle / Ivy
package com.paoapps.fifi.auth.di
import com.paoapps.fifi.auth.AuthApi
import com.paoapps.fifi.auth.Claims
import com.paoapps.fifi.auth.IdentifiableClaims
import com.paoapps.fifi.auth.SettingsTokenStore
import com.paoapps.fifi.auth.TokenDecoder
import com.paoapps.fifi.auth.TokenStore
import com.paoapps.fifi.auth.api.AuthClientApi
import com.paoapps.fifi.auth.model.AuthModel
import com.paoapps.fifi.auth.model.AuthModelImpl
import com.paoapps.fifi.di.AppDefinition
import com.paoapps.fifi.model.Model
import com.paoapps.fifi.model.ModelEnvironment
import org.koin.core.logger.Logger
import org.koin.core.module.Module
import org.koin.core.qualifier.named
import org.koin.core.scope.Scope
import org.koin.dsl.KoinAppDeclaration
import org.koin.dsl.module
internal expect fun platformInjections(serviceName: String, module: Module)
enum class PlatformModuleQualifier {
ENCRYPTED_SETTINGS,
SETTINGS
}
data class Authentication, RefreshTokenClaims: Claims>(
val tokenDecoder: TokenDecoder,
val authApi: (scope: Scope) -> AuthApi
)
fun , RefreshTokenClaims: Claims, Api: AuthClientApi> initKoinApp(
authAppDefinition: AuthAppDefinition,
additionalModules: List = emptyList(),
logger: Logger? = null,
appDeclaration: KoinAppDeclaration = {},
) = com.paoapps.fifi.di.initKoinApp(
authAppDefinition,
additionalModules + module {
single> {
val model: Model = get()
authAppDefinition.authModel (model)
}
single { SettingsTokenStore(get(named(PlatformModuleQualifier.ENCRYPTED_SETTINGS))) }
single {
authAppDefinition.authentication.tokenDecoder
}
single {
authAppDefinition.authentication.authApi.invoke(this)
}
platformInjections(authAppDefinition.serviceName, this)
},
logger,
appDeclaration
)
interface AuthAppDefinition, RefreshTokenClaims: Claims, Api: AuthClientApi>: AppDefinition {
val serviceName: String
val authentication: Authentication
fun authModel(model: Model): AuthModel {
return AuthModelImpl(model)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy