[auth] Add metadata support

This commit is contained in:
Chris Bianca
2018-01-19 16:19:08 +00:00
parent 3f0087c24d
commit 9396b4fb31
5 changed files with 40 additions and 12 deletions

View File

@@ -1,5 +1,5 @@
buildscript {
ext.firebaseVersion = '11.4.2'
ext.firebaseVersion = '11.8.0'
repositories {
jcenter()
maven {

View File

@@ -36,6 +36,7 @@ import com.google.firebase.auth.AuthCredential;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
import com.google.firebase.auth.FirebaseAuthProvider;
import com.google.firebase.auth.FirebaseUserMetadata;
import com.google.firebase.auth.GithubAuthProvider;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;
@@ -1417,6 +1418,14 @@ class RNFirebaseAuth extends ReactContextBaseJavaModule {
userMap.putArray("providerData", convertProviderData(user.getProviderData(), user));
WritableMap metadataMap = Arguments.createMap();
FirebaseUserMetadata metadata = user.getMetadata();
if (metadata != null) {
metadataMap.putDouble("creationTime", metadata.getCreationTimestamp());
metadataMap.putDouble("lastSignInTime", metadata.getLastSignInTimestamp());
}
userMap.putMap("metadata", metadataMap);
return userMap;
}

View File

@@ -1181,14 +1181,23 @@ RCT_EXPORT_METHOD(useDeviceLanguage:
@param user FIRUser
@return NSDictionary
*/
- (NSMutableDictionary *)firebaseUserToDict:(FIRUser *)user {
NSMutableDictionary *userDict = [@{@"uid": user.uid, @"email": user.email ? user.email : [NSNull null], @"emailVerified": @(user.emailVerified), @"isAnonymous": @(user.anonymous), @"displayName": user.displayName ? user.displayName : [NSNull null], @"refreshToken": user.refreshToken, @"providerId": [user.providerID lowercaseString], @"phoneNumber": user.phoneNumber ? user.phoneNumber : [NSNull null], @"providerData": [self convertProviderData:user.providerData]} mutableCopy];
if ([user valueForKey:@"photoURL"] != nil) {
[userDict setValue:[user.photoURL absoluteString] forKey:@"photoURL"];
}
return userDict;
- (NSDictionary *)firebaseUserToDict:(FIRUser *)user {
return @{
@"displayName": user.displayName ? user.displayName : [NSNull null],
@"email": user.email ? user.email : [NSNull null],
@"emailVerified": @(user.emailVerified),
@"isAnonymous": @(user.anonymous),
@"metadata": @{
@"creationTime": user.metadata.creationDate ? @(round([user.metadata.creationDate timeIntervalSince1970] * 1000.0)): [NSNull null],
@"lastSignInTime": user.metadata.lastSignInDate ? @(round([user.metadata.lastSignInDate timeIntervalSince1970] * 1000.0)) : [NSNull null],
},
@"phoneNumber": user.phoneNumber ? user.phoneNumber : [NSNull null],
@"photoURL": user.photoURL ? [user.photoURL absoluteString] : [NSNull null],
@"providerData": [self convertProviderData:user.providerData],
@"providerId": [user.providerID lowercaseString],
@"refreshToken": user.refreshToken,
@"uid": user.uid
};
}
- (FIRActionCodeSettings *)buildActionCodeSettings:(NSDictionary *)actionCodeSettings {

View File

@@ -6,13 +6,14 @@ import INTERNALS from '../../utils/internals';
import { getNativeModule } from '../../utils/native';
import type Auth from './';
import type { ActionCodeSettings, AuthCredential } from '../../types';
import type { ActionCodeSettings, AuthCredential, UserMetadata } from '../../types';
type NativeUser = {
displayName?: string,
email?: string,
emailVerified?: boolean,
isAnonymous?: boolean,
metadata: UserMetadata,
phoneNumber?: string,
photoURL?: string,
providerData: UserInfo[],
@@ -68,6 +69,10 @@ export default class User {
return this._user.isAnonymous || false;
}
get metadata(): UserMetadata {
return this._user.metadata;
}
get phoneNumber(): ?string {
return this._user.phoneNumber || null;
}

View File

@@ -93,14 +93,14 @@ export type ConfigModule = {
nativeModuleExists: boolean,
} & ConfigStatics;
/* Auth types */
export type AuthCredential = {
providerId: string,
token: string,
secret: string
}
/* Auth types */
export type AuthModule = {
(): Auth,
nativeModuleExists: boolean,
@@ -119,6 +119,11 @@ export type ActionCodeSettings = {
url: string,
}
export type UserMetadata = {
creationTime?: string,
lastSignInTime?: string,
}
/* Crash types */
export type CrashModule = {