diff --git a/packages/firebase_auth/CHANGELOG.md b/packages/firebase_auth/CHANGELOG.md index 74495aef68ee..dd93f7492389 100644 --- a/packages/firebase_auth/CHANGELOG.md +++ b/packages/firebase_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.2 + +* Add access to user metadata. + ## 0.6.1 * Adding support for linkWithTwitterCredential in FirebaseAuth. diff --git a/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java b/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java index 5eccd3c5efdf..dd932794a139 100755 --- a/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java +++ b/packages/firebase_auth/android/src/main/java/io/flutter/plugins/firebaseauth/FirebaseAuthPlugin.java @@ -614,6 +614,8 @@ private Map mapFromUser(FirebaseUser user) { providerData.add(Collections.unmodifiableMap(userInfoToMap(userInfo))); } Map userMap = userInfoToMap(user); + userMap.put("creationTimestamp", user.getMetadata().getCreationTimestamp()); + userMap.put("lastSignInTimestamp", user.getMetadata().getLastSignInTimestamp()); userMap.put("isAnonymous", user.isAnonymous()); userMap.put("isEmailVerified", user.isEmailVerified()); userMap.put("providerData", Collections.unmodifiableList(providerData)); diff --git a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m index ca6edcc8e62e..5bdf4b929992 100644 --- a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m +++ b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m @@ -291,7 +291,13 @@ - (NSMutableDictionary *)dictionaryFromUser:(FIRUser *)user { for (id userInfo in user.providerData) { [providerData addObject:toDictionary(userInfo)]; } + + long creationDate = [user.metadata.creationDate timeIntervalSince1970]; + long lastSignInDate = [user.metadata.lastSignInDate timeIntervalSince1970]; + NSMutableDictionary *userData = [toDictionary(user) mutableCopy]; + userData[@"creationTimestamp"] = [NSNumber numberWithLong:creationDate]; + userData[@"lastSignInTimestamp"] = [NSNumber numberWithInt:lastSignInDate]; userData[@"isAnonymous"] = [NSNumber numberWithBool:user.isAnonymous]; userData[@"isEmailVerified"] = [NSNumber numberWithBool:user.isEmailVerified]; userData[@"providerData"] = providerData; diff --git a/packages/firebase_auth/lib/firebase_auth.dart b/packages/firebase_auth/lib/firebase_auth.dart index 7020bdefe7f1..873b8ce3d8f9 100755 --- a/packages/firebase_auth/lib/firebase_auth.dart +++ b/packages/firebase_auth/lib/firebase_auth.dart @@ -8,6 +8,16 @@ import 'package:flutter/services.dart'; import 'package:meta/meta.dart'; /// Represents user data returned from an identity provider. + +class FirebaseUserMetadata { + final Map _data; + + FirebaseUserMetadata._(this._data); + + int get creationTimestamp => _data['creationTimestamp']; + int get lastSignInTimestamp => _data['lastSignInTimestamp']; +} + class UserInfo { final Map _data; @@ -57,16 +67,20 @@ class UserUpdateInfo { /// Represents a user. class FirebaseUser extends UserInfo { final List providerData; + final FirebaseUserMetadata _metadata; FirebaseUser._(Map data) : providerData = data['providerData'] .map((dynamic item) => UserInfo._(item)) .toList(), + _metadata = FirebaseUserMetadata._(data), super._(data); // Returns true if the user is anonymous; that is, the user account was // created with signInAnonymously() and has not been linked to another // account. + FirebaseUserMetadata get metadata => _metadata; + bool get isAnonymous => _data['isAnonymous']; /// Returns true if the user's email is verified. diff --git a/packages/firebase_auth/pubspec.yaml b/packages/firebase_auth/pubspec.yaml index 72388180fc62..1d443b4abc44 100755 --- a/packages/firebase_auth/pubspec.yaml +++ b/packages/firebase_auth/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for Firebase Auth, enabling Android and iOS like Google, Facebook and Twitter. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_auth -version: 0.6.0 +version: 0.6.2 flutter: plugin: