Invalidate account.secretes on failure to lo in

This commit is contained in:
Him188 2022-05-02 10:12:34 +01:00
parent ed37609731
commit 2a417445a7

View File

@ -119,18 +119,24 @@ internal class SsoProcessorImpl(
@Throws(LoginFailedException::class) @Throws(LoginFailedException::class)
override suspend fun login(handler: NetworkHandler) = withExceptionCollector { override suspend fun login(handler: NetworkHandler) = withExceptionCollector {
components[BdhSessionSyncer].loadServerListFromCache() components[BdhSessionSyncer].loadServerListFromCache()
if (client.wLoginSigInfoInitialized) { try {
ssoContext.bot.components[EcdhInitialPublicKeyUpdater].refreshInitialPublicKeyAndApplyECDH() if (client.wLoginSigInfoInitialized) {
kotlin.runCatching { ssoContext.bot.components[EcdhInitialPublicKeyUpdater].refreshInitialPublicKeyAndApplyECDH()
FastLoginImpl(handler).doLogin() kotlin.runCatching {
}.onFailure { e -> FastLoginImpl(handler).doLogin()
collectException(e) }.onFailure { e ->
collectException(e)
SlowLoginImpl(handler).doLogin()
}
} else {
client = createClient(ssoContext.bot)
ssoContext.bot.components[EcdhInitialPublicKeyUpdater].refreshInitialPublicKeyAndApplyECDH()
SlowLoginImpl(handler).doLogin() SlowLoginImpl(handler).doLogin()
} }
} else { } catch (e: Exception) {
client = createClient(ssoContext.bot) // Failed to log in, invalidate secrets.
ssoContext.bot.components[EcdhInitialPublicKeyUpdater].refreshInitialPublicKeyAndApplyECDH() ssoContext.bot.components[AccountSecretsManager].invalidate()
SlowLoginImpl(handler).doLogin() throw e
} }
components[AccountSecretsManager].saveSecrets(ssoContext.account, AccountSecretsImpl(client)) components[AccountSecretsManager].saveSecrets(ssoContext.account, AccountSecretsImpl(client))
registerClientOnline(handler) registerClientOnline(handler)