From 9ea4853e88c0eb44e87e0981ac53a3866f3de060 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 5 May 2025 17:46:17 +0200 Subject: [PATCH] Improve the callback uri format and customization. (#4664) * Remove unused SUPPORT_EMAIL_ADDRESS * Improve the callback uri format and customization. Use io.element.android for the scheme of Oidc redirection for Element X. For nightly the scheme will be io.element.android.nightly For debug the scheme will be io.element.android.debug Element Pro is using `io.element` --- app/build.gradle.kts | 17 +++++++++++ app/src/main/AndroidManifest.xml | 3 +- .../x/oidc/DefaultOidcRedirectUrlProvider.kt | 25 +++++++++++++++++ .../DefaultOidcRedirectUrlProviderTest.kt | 28 +++++++++++++++++++ .../appnav/intent/IntentResolverTest.kt | 15 ++++++---- docs/oidc.md | 4 +-- libraries/matrix/api/build.gradle.kts | 7 ----- .../libraries/matrix/api/auth/OidcConfig.kt | 5 ---- .../api/auth/OidcRedirectUrlProvider.kt | 12 ++++++++ .../impl/auth/OidcConfigurationProvider.kt | 4 ++- .../auth/OidcConfigurationProviderTest.kt | 10 ++++--- .../RustMatrixAuthenticationServiceTest.kt | 6 +++- .../test/auth/FakeOidcRedirectUrlProvider.kt | 18 ++++++++++++ .../libraries/matrix/test/core/BuildMeta.kt | 2 +- .../libraries/oidc/impl/OidcUrlParser.kt | 21 ++++++++++---- .../libraries/oidc/impl/webview/OidcNode.kt | 3 ++ .../libraries/oidc/impl/webview/OidcView.kt | 3 +- ...serTest.kt => DefaultOidcUrlParserTest.kt} | 27 +++++++++++------- .../src/main/kotlin/config/BuildTimeConfig.kt | 1 - tools/adb/oidc.sh | 4 +-- 20 files changed, 166 insertions(+), 49 deletions(-) create mode 100644 app/src/main/kotlin/io/element/android/x/oidc/DefaultOidcRedirectUrlProvider.kt create mode 100644 app/src/test/kotlin/io/element/android/x/oidc/DefaultOidcRedirectUrlProviderTest.kt create mode 100644 libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/auth/OidcRedirectUrlProvider.kt create mode 100644 libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/auth/FakeOidcRedirectUrlProvider.kt rename libraries/oidc/impl/src/test/kotlin/io/element/android/libraries/oidc/impl/{OidcUrlParserTest.kt => DefaultOidcUrlParserTest.kt} (52%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8e6d68bada..cd484c95b0 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -106,14 +106,25 @@ android { logger.warnInBox("Building ${defaultConfig.applicationId} ($baseAppName)") buildTypes { + val oidcRedirectSchemeBase = BuildTimeConfig.METADATA_HOST_REVERSED ?: "io.element.android" getByName("debug") { resValue("string", "app_name", "$baseAppName dbg") + resValue( + "string", + "login_redirect_scheme", + "$oidcRedirectSchemeBase.debug", + ) applicationIdSuffix = ".debug" signingConfig = signingConfigs.getByName("debug") } getByName("release") { resValue("string", "app_name", baseAppName) + resValue( + "string", + "login_redirect_scheme", + oidcRedirectSchemeBase, + ) signingConfig = signingConfigs.getByName("debug") postprocessing { @@ -131,6 +142,11 @@ android { applicationIdSuffix = ".nightly" versionNameSuffix = "-nightly" resValue("string", "app_name", "$baseAppName nightly") + resValue( + "string", + "login_redirect_scheme", + "$oidcRedirectSchemeBase.nightly", + ) matchingFallbacks += listOf("release") signingConfig = signingConfigs.getByName("nightly") @@ -284,6 +300,7 @@ dependencies { testImplementation(libs.test.truth) testImplementation(libs.test.turbine) testImplementation(projects.libraries.matrix.test) + testImplementation(projects.services.toolbox.test) koverDependencies() } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c867a817f4..c26c9a5a51 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -60,8 +60,7 @@ - - +