From c61ee595283482a769af8125cf58aaa3d7790f93 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 @@ - - +