mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-06-19 18:23:17 +08:00
[auth] Add metadata support
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
buildscript {
|
||||
ext.firebaseVersion = '11.4.2'
|
||||
ext.firebaseVersion = '11.8.0'
|
||||
repositories {
|
||||
jcenter()
|
||||
maven {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user