Skip to content

Commit d4c27da

Browse files
authored
feat(auth, web): add SAMLProvider support to Web (#10075)
1 parent 6c8f951 commit d4c27da

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

packages/firebase_auth/firebase_auth_web/lib/src/interop/auth.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -963,6 +963,26 @@ class TwitterAuthProvider
963963
auth_interop.TwitterAuthProviderJsImpl.credential(token, secret);
964964
}
965965

966+
/// SAML auth provider.
967+
///
968+
/// See: <https://firebase.google.com/docs/reference/js/auth.samlauthprovider>.
969+
class SAMLAuthProvider
970+
extends AuthProvider<auth_interop.SAMLAuthProviderJsImpl> {
971+
/// Creates a new SAMLAuthProvider with the providerId.
972+
/// The providerId must start with "saml."
973+
factory SAMLAuthProvider(String providerId) => SAMLAuthProvider.fromJsObject(
974+
auth_interop.SAMLAuthProviderJsImpl(providerId));
975+
976+
/// Creates a new SAMLAuthProvider from a [jsObject].
977+
SAMLAuthProvider.fromJsObject(auth_interop.SAMLAuthProviderJsImpl jsObject)
978+
: super.fromJsObject(jsObject);
979+
980+
/// Used to extract the underlying OAuthCredential from a UserCredential.
981+
static auth_interop.OAuthCredential? credentialFromResult(
982+
auth_interop.UserCredentialJsImpl userCredential) =>
983+
auth_interop.SAMLAuthProviderJsImpl.credentialFromResult(userCredential);
984+
}
985+
966986
/// Phone number auth provider.
967987
///
968988
/// See: <https://firebase.google.com/docs/reference/js/firebase.auth.PhoneAuthProvider>.

packages/firebase_auth/firebase_auth_web/lib/src/interop/auth_interop.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,14 @@ class PhoneAuthProviderJsImpl extends AuthProviderJsImpl {
471471
);
472472
}
473473

474+
@JS('SAMLAuthProvider')
475+
class SAMLAuthProviderJsImpl extends AuthProviderJsImpl {
476+
external factory SAMLAuthProviderJsImpl(String providerId);
477+
external static OAuthCredential? credentialFromResult(
478+
UserCredentialJsImpl userCredential,
479+
);
480+
}
481+
474482
@JS('ApplicationVerifier')
475483
abstract class ApplicationVerifierJsImpl {
476484
external String get type;

packages/firebase_auth/firebase_auth_web/lib/src/utils/web_utils.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,10 @@ auth_interop.AuthProvider convertPlatformAuthProvider(
261261
return oAuthProvider;
262262
}
263263

264+
if (authProvider is SAMLAuthProvider) {
265+
return auth_interop.SAMLAuthProvider(authProvider.providerId);
266+
}
267+
264268
throw FallThroughError();
265269
}
266270

0 commit comments

Comments
 (0)