Skip to content

Commit

Permalink
refactor: unify access token refreshing logic [WPB-5038] (#2336)
Browse files Browse the repository at this point in the history
(cherry picked from commit 0f2a5d0)
  • Loading branch information
vitorhugods committed Oct 18, 2023
1 parent 43d3d9e commit edadb86
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import com.wire.kalium.logic.CoreLogic
import com.wire.kalium.logic.configuration.server.ServerConfig
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.auth.AddAuthenticatedUserUseCase
import com.wire.kalium.logic.feature.auth.AuthTokens
import com.wire.kalium.logic.feature.auth.AccountTokens
import com.wire.kalium.logic.feature.auth.sso.SSOLoginSessionResult
import com.wire.kalium.logic.functional.Either
import com.wire.kalium.logic.functional.flatMap
Expand Down Expand Up @@ -59,7 +59,7 @@ class MigrateActiveAccountsUseCase @Inject constructor(
)
val isDataComplete = isDataComplete(serverConfig, activeAccount)
val ssoId = activeAccount.ssoId?.let { ssoId -> mapper.fromScalaSsoID(ssoId) }
val authTokensEither: Either<CoreFailure, AuthTokens> = if (isDataComplete) {
val accountTokensEither: Either<CoreFailure, AccountTokens> = if (isDataComplete) {
// when the data is complete it means the user has a domain and an access token
// which make the following double bang operator safe
val domain = if (!activeAccount.domain.isNullOrBlank()) {
Expand All @@ -70,7 +70,7 @@ class MigrateActiveAccountsUseCase @Inject constructor(

val userId = UserId(activeAccount.id, domain)
Either.Right(
AuthTokens(
AccountTokens(
userId = userId,
accessToken = activeAccount.accessToken?.token!!,
tokenType = activeAccount.accessToken.tokenType,
Expand All @@ -85,7 +85,7 @@ class MigrateActiveAccountsUseCase @Inject constructor(
)
}

val accountResult = authTokensEither.flatMap { authTokens ->
val accountResult = accountTokensEither.flatMap { authTokens ->
val addAccountResult = coreLogic.globalScope {
addAuthenticatedAccount(
serverConfigId = serverConfig.id,
Expand Down Expand Up @@ -117,13 +117,13 @@ class MigrateActiveAccountsUseCase @Inject constructor(
private suspend fun handleMissingData(
serverConfig: ServerConfig,
refreshToken: String,
): Either<CoreFailure, AuthTokens> = coreLogic.authenticationScope(serverConfig) {
): Either<CoreFailure, AccountTokens> = coreLogic.authenticationScope(serverConfig) {
ssoLoginScope.getLoginSession(refreshToken)
}.let {
when (it) {
is SSOLoginSessionResult.Failure.Generic -> Either.Left(it.genericFailure)
SSOLoginSessionResult.Failure.InvalidCookie -> Either.Left(MigrationFailure.InvalidRefreshToken)
is SSOLoginSessionResult.Success -> Either.Right(it.authTokens)
is SSOLoginSessionResult.Success -> Either.Right(it.accountTokens)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ class LoginSSOViewModel @Inject constructor(
}
}
val storedUserId = addAuthenticatedUser(
authTokens = ssoLoginResult.authTokens,
authTokens = ssoLoginResult.accountTokens,
ssoId = ssoLoginResult.ssoId,
serverConfigId = serverConfigId,
proxyCredentials = ssoLoginResult.proxyCredentials,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ import com.wire.kalium.logic.data.id.QualifiedIdMapper
import com.wire.kalium.logic.data.user.SsoId
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.auth.AddAuthenticatedUserUseCase
import com.wire.kalium.logic.feature.auth.AuthTokens
import com.wire.kalium.logic.feature.auth.AccountTokens
import com.wire.kalium.logic.feature.auth.AuthenticationResult
import com.wire.kalium.logic.feature.auth.AuthenticationScope
import com.wire.kalium.logic.feature.auth.LoginUseCase
Expand Down Expand Up @@ -500,7 +500,7 @@ class LoginEmailViewModelTest {
isValid = true, DeviceType.Desktop, "label", null
)
val SSO_ID: SsoId = SsoId("scim_id", null, null)
val AUTH_TOKEN = AuthTokens(
val AUTH_TOKEN = AccountTokens(
userId = UserId("user_id", "domain"),
accessToken = "access_token",
refreshToken = "refresh_token",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ import com.wire.kalium.logic.data.id.QualifiedID
import com.wire.kalium.logic.data.user.SsoId
import com.wire.kalium.logic.data.user.UserId
import com.wire.kalium.logic.feature.auth.AddAuthenticatedUserUseCase
import com.wire.kalium.logic.feature.auth.AuthTokens
import com.wire.kalium.logic.feature.auth.AccountTokens
import com.wire.kalium.logic.feature.auth.AuthenticationScope
import com.wire.kalium.logic.feature.auth.DomainLookupUseCase
import com.wire.kalium.logic.feature.auth.ValidateEmailUseCase
Expand Down Expand Up @@ -544,7 +544,7 @@ class LoginSSOViewModelTest {
null
)
val SSO_ID: SsoId = SsoId("scim_id", null, null)
val AUTH_TOKEN = AuthTokens(
val AUTH_TOKEN = AccountTokens(
userId = UserId("user_id", "domain"),
accessToken = "access_token",
refreshToken = "refresh_token",
Expand Down
2 changes: 1 addition & 1 deletion kalium
Submodule kalium updated 37 files
+13 βˆ’3 logic/src/commonJvmAndroid/kotlin/com/wire/kalium/logic/feature/call/scenario/OnConfigRequest.kt
+6 βˆ’6 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/auth/login/LoginRepository.kt
+6 βˆ’6 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/register/RegisterAccountRepository.kt
+12 βˆ’12 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/session/SessionMapper.kt
+5 βˆ’5 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/session/SessionRepository.kt
+39 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/session/token/AccessToken.kt
+90 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/session/token/AccessTokenRepository.kt
+39 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/data/session/token/AccessTokenRepositoryFactory.kt
+31 βˆ’6 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/UserSessionScope.kt
+8 βˆ’8 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/AddAuthenticatedUserUseCase.kt
+21 βˆ’5 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/AuthSession.kt
+1 βˆ’1 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/LoginUseCase.kt
+7 βˆ’3 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/auth/sso/GetSSOLoginSessionUseCase.kt
+2 βˆ’2 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/register/RegisterAccountUseCase.kt
+8 βˆ’13 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/session/UpgradeCurrentSessionUseCase.kt
+64 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/session/token/AccessTokenRefresher.kt
+47 βˆ’0 logic/src/commonMain/kotlin/com/wire/kalium/logic/feature/session/token/AccessTokenRefresherFactory.kt
+32 βˆ’34 logic/src/commonMain/kotlin/com/wire/kalium/logic/network/SessionManagerImpl.kt
+11 βˆ’12 logic/src/commonTest/kotlin/com/wire/kalium/logic/data/register/RegisterAccountRepositoryTest.kt
+8 βˆ’8 logic/src/commonTest/kotlin/com/wire/kalium/logic/data/session/SessionMapperTest.kt
+21 βˆ’9 logic/src/commonTest/kotlin/com/wire/kalium/logic/feature/auth/AddAuthenticatedUserUseCaseTest.kt
+3 βˆ’3 logic/src/commonTest/kotlin/com/wire/kalium/logic/feature/auth/LoginUseCaseTest.kt
+2 βˆ’2 logic/src/commonTest/kotlin/com/wire/kalium/logic/feature/register/RegisterAccountUseCaseTest.kt
+141 βˆ’0 logic/src/commonTest/kotlin/com/wire/kalium/logic/feature/session/token/AccessTokenRefresherTest.kt
+199 βˆ’0 logic/src/commonTest/kotlin/com/wire/kalium/logic/network/SessionManagerTest.kt
+4 βˆ’1 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/authenticated/AccessTokenApi.kt
+8 βˆ’0 network/src/commonMain/kotlin/com/wire/kalium/network/api/base/model/Tokens.kt
+15 βˆ’4 network/src/commonMain/kotlin/com/wire/kalium/network/networkContainer/AuthenticatedNetworkContainer.kt
+30 βˆ’0 network/src/commonMain/kotlin/com/wire/kalium/network/session/FailureToRefreshTokenException.kt
+13 βˆ’4 network/src/commonMain/kotlin/com/wire/kalium/network/session/SessionManager.kt
+5 βˆ’12 network/src/commonTest/kotlin/com/wire/kalium/api/TestSessionManagerV0.kt
+78 βˆ’19 network/src/commonTest/kotlin/com/wire/kalium/api/common/SessionManagerIntegrationTest.kt
+2 βˆ’1 persistence/src/androidMain/kotlin/com/wire/kalium/persistence/kmmSettings/GlobalPrefProvider.kt
+2 βˆ’1 persistence/src/appleMain/kotlin/com/wire/kalium/persistence/kmmSettings/GlobalPrefProvider.kt
+21 βˆ’7 persistence/src/commonMain/kotlin/com/wire/kalium/persistence/client/AuthTokenStorage.kt
+1 βˆ’2 persistence/src/commonTest/kotlin/com/wire/kalium/persistence/client/AuthTokenStorageTest.kt
+2 βˆ’1 persistence/src/jvmMain/kotlin/com/wire/kalium/persistence/kmmSettings/GlobalPrefProvider.kt

0 comments on commit edadb86

Please sign in to comment.