From 83821020f3e41e524cdf935b20bdacbcf24daa4b Mon Sep 17 00:00:00 2001 From: yostyle Date: Tue, 17 Dec 2024 22:35:25 +0100 Subject: [PATCH] Code optimizing --- .../app/features/crypto/keys/KeysExporter.kt | 18 +++++++++--------- .../features/onboarding/OnboardingViewModel.kt | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt b/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt index e3c9336327..6a84875b6e 100644 --- a/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt +++ b/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt @@ -69,15 +69,15 @@ class KeysExporter @Inject constructor( // TCHAP add policy on the password to export keys private suspend fun checkPasswordPolicy(password: String) { val passwordPolicy = tryOrNull { authenticationService.getPasswordPolicy(session.sessionParams.homeServerConnectionConfig) } - val isValid = if (passwordPolicy != null) { - passwordPolicy.minLength?.let { it <= password.length } ?: true && - passwordPolicy.requireDigit?.let { it && password.any { char -> char.isDigit() } } ?: true && - passwordPolicy.requireLowercase?.let { it && password.any { char -> char.isLetter() && char.isLowerCase() } } ?: true && - passwordPolicy.requireUppercase?.let { it && password.any { char -> char.isLetter() && char.isUpperCase() } } ?: true && - passwordPolicy.requireSymbol?.let { it && password.any { char -> !char.isLetter() && !char.isDigit() } } ?: true - } else { - true - } + val isValid = passwordPolicy?.let { policy -> + val minLengthValid = policy.minLength?.let { minLength -> password.length >= minLength } ?: true + val hasDigit = policy.requireDigit == null || password.any { it.isDigit() } + val hasLowercase = policy.requireLowercase == null || password.any { it.isLowerCase() } + val hasUppercase = policy.requireUppercase == null || password.any { it.isUpperCase() } + val hasSymbol = policy.requireSymbol == null || password.any { !it.isLetterOrDigit() } + + minLengthValid && hasDigit && hasLowercase && hasUppercase && hasSymbol + } ?: true if (!isValid) { throw Failure.ServerError( diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt index 7f8bdb7a5b..9169e9686e 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt @@ -1033,15 +1033,15 @@ class OnboardingViewModel @AssistedInject constructor( } else { currentJob = viewModelScope.launch { val passwordPolicy = tryOrNull { authenticationService.getPasswordPolicy(homeServerConnectionConfig) } - val isValid = if (passwordPolicy != null) { - passwordPolicy.minLength?.let { it <= password.length } ?: true && - passwordPolicy.requireDigit?.let { it && password.any { char -> char.isDigit() } } ?: true && - passwordPolicy.requireLowercase?.let { it && password.any { char -> char.isLetter() && char.isLowerCase() } } ?: true && - passwordPolicy.requireUppercase?.let { it && password.any { char -> char.isLetter() && char.isUpperCase() } } ?: true && - passwordPolicy.requireSymbol?.let { it && password.any { char -> !char.isLetter() && !char.isDigit() } } ?: true - } else { - true - } + val isValid = passwordPolicy?.let { policy -> + val minLengthValid = policy.minLength?.let { minLength -> password.length >= minLength } ?: true + val hasDigit = policy.requireDigit == null || password.any { it.isDigit() } + val hasLowercase = policy.requireLowercase == null || password.any { it.isLowerCase() } + val hasUppercase = policy.requireUppercase == null || password.any { it.isUpperCase() } + val hasSymbol = policy.requireSymbol == null || password.any { !it.isLetterOrDigit() } + + minLengthValid && hasDigit && hasLowercase && hasUppercase && hasSymbol + } ?: true if (!isValid) { _viewEvents.post(OnboardingViewEvents.Failure(Throwable(stringProvider.getString(CommonStrings.tchap_password_weak_pwd_error))))