diff --git a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt index 4e0653ab2..d45066c3f 100644 --- a/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt +++ b/firebase-auth/src/androidMain/kotlin/dev/gitlive/firebase/auth/credentials.kt @@ -28,6 +28,11 @@ actual object EmailAuthProvider { email: String, password: String ): AuthCredential = AuthCredential(com.google.firebase.auth.EmailAuthProvider.getCredential(email, password)) + + actual fun credentialWithLink( + email: String, + emailLink: String + ): AuthCredential = AuthCredential(com.google.firebase.auth.EmailAuthProvider.getCredentialWithLink(email, emailLink)) } actual object FacebookAuthProvider { diff --git a/firebase-auth/src/commonMain/kotlin/dev/gitlive/firebase/auth/credentials.kt b/firebase-auth/src/commonMain/kotlin/dev/gitlive/firebase/auth/credentials.kt index ae23f85ab..28ed0b801 100644 --- a/firebase-auth/src/commonMain/kotlin/dev/gitlive/firebase/auth/credentials.kt +++ b/firebase-auth/src/commonMain/kotlin/dev/gitlive/firebase/auth/credentials.kt @@ -15,6 +15,7 @@ expect class OAuthCredential : AuthCredential expect object EmailAuthProvider { fun credential(email: String, password: String): AuthCredential + fun credentialWithLink(email: String, emailLink: String): AuthCredential } expect object FacebookAuthProvider { diff --git a/firebase-auth/src/commonTest/kotlin/dev/gitlive/firebase/auth/auth.kt b/firebase-auth/src/commonTest/kotlin/dev/gitlive/firebase/auth/auth.kt index d4accec09..12250e31e 100644 --- a/firebase-auth/src/commonTest/kotlin/dev/gitlive/firebase/auth/auth.kt +++ b/firebase-auth/src/commonTest/kotlin/dev/gitlive/firebase/auth/auth.kt @@ -105,6 +105,14 @@ class FirebaseAuthTest { assertFalse(Firebase.auth.isSignInWithEmailLink(invalidLink)) } + @Test + fun testCredentialWithLink() { + val link = "http://localhost:9099/emulator/action?mode=signIn&lang=en&oobCode=_vr0QcFcxcVeLZbrcU-GpTaZiuxlHquqdC8MSy0YM_vzWCTAQgV9Jq&apiKey=fake-api-key&continueUrl=https%3A%2F%2Fexample.com%2Fsignin" + val email = "test@test.com" + val credential = EmailAuthProvider.credentialWithLink(email, link) + assertEquals("password", credential.providerId) + } + private suspend fun getTestUid(email: String, password: String): String { val uid = Firebase.auth.let { val user = try { diff --git a/firebase-auth/src/iosMain/kotlin/dev/gitlive/firebase/auth/credentials.kt b/firebase-auth/src/iosMain/kotlin/dev/gitlive/firebase/auth/credentials.kt index f20b884e1..365fee8ce 100644 --- a/firebase-auth/src/iosMain/kotlin/dev/gitlive/firebase/auth/credentials.kt +++ b/firebase-auth/src/iosMain/kotlin/dev/gitlive/firebase/auth/credentials.kt @@ -20,6 +20,12 @@ actual object EmailAuthProvider { password: String ): AuthCredential = AuthCredential(FIREmailAuthProvider.credentialWithEmail(email = email, password = password)) + + actual fun credentialWithLink( + email: String, + emailLink: String + ): AuthCredential = + AuthCredential(FIREmailAuthProvider.credentialWithEmail(email = email, link = emailLink)) } actual object FacebookAuthProvider { diff --git a/firebase-auth/src/jsMain/kotlin/dev/gitlive/firebase/auth/credentials.kt b/firebase-auth/src/jsMain/kotlin/dev/gitlive/firebase/auth/credentials.kt index f5f911cc1..13db5dc70 100644 --- a/firebase-auth/src/jsMain/kotlin/dev/gitlive/firebase/auth/credentials.kt +++ b/firebase-auth/src/jsMain/kotlin/dev/gitlive/firebase/auth/credentials.kt @@ -16,6 +16,11 @@ actual class OAuthCredential(js: firebase.auth.AuthCredential) : AuthCredential( actual object EmailAuthProvider { actual fun credential(email: String, password: String): AuthCredential = AuthCredential(firebase.auth.EmailAuthProvider.credential(email, password)) + + actual fun credentialWithLink( + email: String, + emailLink: String + ): AuthCredential = AuthCredential(firebase.auth.EmailAuthProvider.credentialWithLink(email, emailLink)) } actual object FacebookAuthProvider { diff --git a/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt b/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt index 53b46fcc2..670ddeab4 100644 --- a/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt +++ b/firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt @@ -128,6 +128,7 @@ external object firebase { class EmailAuthProvider : AuthProvider { companion object { fun credential(email : String, password : String): AuthCredential + fun credentialWithLink(email: String, emailLink: String): AuthCredential } }