firebase-admin
Advanced tools
Comparing version 5.0.1 to 5.1.0
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -33,3 +33,3 @@ /*! | ||
'Content-Type': 'application/json', | ||
'X-Client-Version': 'Node/Admin/5.0.1', | ||
'X-Client-Version': 'Node/Admin/5.1.0', | ||
}; | ||
@@ -58,3 +58,5 @@ /** Firebase Auth request timeout duration in milliseconds. */ | ||
deleteAttribute: true, | ||
deleteProvider: true, | ||
sanityCheck: true, | ||
phoneNumber: true, | ||
}; | ||
@@ -82,2 +84,7 @@ // Remove invalid keys from original request. | ||
} | ||
// phoneNumber should be a string and a valid phone number. | ||
if (typeof request.phoneNumber !== 'undefined' && | ||
!validator.isPhoneNumber(request.phoneNumber)) { | ||
throw new error_2.FirebaseAuthError(error_2.AuthClientErrorCode.INVALID_PHONE_NUMBER); | ||
} | ||
// password should be a string and a minimum of 6 chars. | ||
@@ -124,3 +131,3 @@ if (typeof request.password !== 'undefined' && | ||
.setRequestValidator(function (request) { | ||
if (!request.localId && !request.email) { | ||
if (!request.localId && !request.email && !request.phoneNumber) { | ||
throw new error_2.FirebaseAuthError(error_2.AuthClientErrorCode.INTERNAL_ERROR, 'INTERNAL ASSERT FAILED: Server request is missing user identifier'); | ||
@@ -194,3 +201,3 @@ } | ||
/** | ||
* Looks a user by uid. | ||
* Looks up a user by uid. | ||
* | ||
@@ -210,3 +217,3 @@ * @param {string} uid The uid of the user to lookup. | ||
/** | ||
* Looks a user by email. | ||
* Looks up a user by email. | ||
* | ||
@@ -226,2 +233,17 @@ * @param {string} email The email of the user to lookup. | ||
/** | ||
* Looks up a user by phone number. | ||
* | ||
* @param {string} phoneNumber The phone number of the user to lookup. | ||
* @return {Promise<Object>} A promise that resolves with the user information. | ||
*/ | ||
FirebaseAuthRequestHandler.prototype.getAccountInfoByPhoneNumber = function (phoneNumber) { | ||
if (!validator.isPhoneNumber(phoneNumber)) { | ||
return Promise.reject(new error_2.FirebaseAuthError(error_2.AuthClientErrorCode.INVALID_PHONE_NUMBER)); | ||
} | ||
var request = { | ||
phoneNumber: [phoneNumber], | ||
}; | ||
return this.invokeRequestHandler(exports.FIREBASE_AUTH_GET_ACCOUNT_INFO, request); | ||
}; | ||
/** | ||
* Deletes an account identified by a uid. | ||
@@ -282,2 +304,15 @@ * | ||
} | ||
// For deleting phoneNumber, this value must be passed as null. | ||
// It will be removed from the backend request and an additional parameter | ||
// deleteProvider: ['phone'] with an array of providerIds (phone in this case), | ||
// will be passed. | ||
// Currently this applies to phone provider only. | ||
if (request.phoneNumber === null) { | ||
request.deleteProvider = ['phone']; | ||
delete request.phoneNumber; | ||
} | ||
else { | ||
// Doesn't apply to other providers in admin SDK. | ||
delete request.deleteProvider; | ||
} | ||
// Rewrite photoURL to photoUrl. | ||
@@ -284,0 +319,0 @@ if (typeof request.photoURL !== 'undefined') { |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -152,2 +152,17 @@ /*! | ||
/** | ||
* Looks up the user identified by the provided phone number and returns a promise that is | ||
* fulfilled with a user record for the given user if that user is found. | ||
* | ||
* @param {string} phoneNumber The phone number of the user to look up. | ||
* @return {Promise<UserRecord>} A promise that resolves with the corresponding user record. | ||
*/ | ||
Auth.prototype.getUserByPhoneNumber = function (phoneNumber) { | ||
return this.authRequestHandler.getAccountInfoByPhoneNumber(phoneNumber) | ||
.then(function (response) { | ||
// Returns the user record populated with server response. | ||
return new user_record_1.UserRecord(response.users[0]); | ||
}); | ||
}; | ||
; | ||
/** | ||
* Creates a new user with the properties provided. | ||
@@ -154,0 +169,0 @@ * |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -85,2 +85,3 @@ /*! | ||
utils.addReadonlyGetter(this, 'providerId', response.providerId); | ||
utils.addReadonlyGetter(this, 'phoneNumber', response.phoneNumber); | ||
} | ||
@@ -95,2 +96,3 @@ /** @return {Object} The plain object representation of the current provider data. */ | ||
providerId: this.providerId, | ||
phoneNumber: this.phoneNumber, | ||
}; | ||
@@ -120,2 +122,3 @@ }; | ||
utils.addReadonlyGetter(this, 'photoURL', response.photoUrl); | ||
utils.addReadonlyGetter(this, 'phoneNumber', response.phoneNumber); | ||
// If disabled is not provided, the account is enabled by default. | ||
@@ -139,2 +142,3 @@ utils.addReadonlyGetter(this, 'disabled', response.disabled || false); | ||
photoURL: this.photoURL, | ||
phoneNumber: this.phoneNumber, | ||
disabled: this.disabled, | ||
@@ -141,0 +145,0 @@ // Convert metadata to json. |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -218,3 +218,3 @@ /*! | ||
this.credential = firebaseCredential; | ||
this.SDK_VERSION = '5.0.1'; | ||
this.SDK_VERSION = '5.1.0'; | ||
/* tslint:disable */ | ||
@@ -221,0 +221,0 @@ // TODO(jwenger): Database is the only consumer of firebase.Promise. We should update it to use |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
/*! | ||
@@ -84,2 +84,3 @@ * Copyright 2017 Google Inc. | ||
email: string; | ||
phoneNumber: string; | ||
photoURL: string; | ||
@@ -96,2 +97,3 @@ providerId: string; | ||
displayName: string; | ||
phoneNumber: string; | ||
photoURL: string; | ||
@@ -131,2 +133,3 @@ disabled: boolean; | ||
getUserByEmail(email: string): Promise<admin.auth.UserRecord>; | ||
getUserByPhoneNumber(phoneNumber: string): Promise<admin.auth.UserRecord>; | ||
updateUser(uid: string, properties: Object): Promise<admin.auth.UserRecord>; | ||
@@ -133,0 +136,0 @@ verifyIdToken(idToken: string): Promise<admin.auth.DecodedIdToken>; |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -29,3 +29,3 @@ /*! | ||
'Content-Type': 'application/json', | ||
'Sdk-Version': 'Node/Admin/5.0.1', | ||
'Sdk-Version': 'Node/Admin/5.1.0', | ||
access_token_auth: 'true', | ||
@@ -32,0 +32,0 @@ }; |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -235,2 +235,7 @@ /*! | ||
}; | ||
AuthClientErrorCode.INVALID_PHONE_NUMBER = { | ||
code: 'invalid-phone-number', | ||
message: 'The phone number must be a non-empty E.164 standard compliant identifier ' + | ||
'string.', | ||
}; | ||
AuthClientErrorCode.INVALID_PHOTO_URL = { | ||
@@ -254,2 +259,6 @@ code: 'invalid-photo-url', | ||
}; | ||
AuthClientErrorCode.PHONE_NUMBER_ALREADY_EXISTS = { | ||
code: 'phone-number-already-exists', | ||
message: 'The user with the provided phone number already exists.', | ||
}; | ||
AuthClientErrorCode.PROJECT_NOT_FOUND = { | ||
@@ -390,2 +399,4 @@ code: 'project-not-found', | ||
INVALID_EMAIL: 'INVALID_EMAIL', | ||
// Invalid phone number. | ||
INVALID_PHONE_NUMBER: 'INVALID_PHONE_NUMBER', | ||
// Invalid service account. | ||
@@ -399,2 +410,4 @@ INVALID_SERVICE_ACCOUNT: 'INVALID_SERVICE_ACCOUNT', | ||
OPERATION_NOT_ALLOWED: 'OPERATION_NOT_ALLOWED', | ||
// Phone number already exists. | ||
PHONE_NUMBER_EXISTS: 'PHONE_NUMBER_ALREADY_EXISTS', | ||
// Project not found. | ||
@@ -401,0 +414,0 @@ PROJECT_NOT_FOUND: 'PROJECT_NOT_FOUND', |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -3,0 +3,0 @@ /*! |
@@ -1,2 +0,2 @@ | ||
/*! firebase-admin v5.0.1 */ | ||
/*! firebase-admin v5.1.0 */ | ||
"use strict"; | ||
@@ -127,2 +127,21 @@ /*! | ||
/** | ||
* Validates that a string is a valid phone number. | ||
* | ||
* @param {any} phoneNumber The string to validate. | ||
* @return {boolean} Whether the string is a valid phone number or not. | ||
*/ | ||
function isPhoneNumber(phoneNumber) { | ||
if (typeof phoneNumber !== 'string') { | ||
return false; | ||
} | ||
// Phone number validation is very lax here. Backend will enforce E.164 | ||
// spec compliance and will normalize accordingly. | ||
// The phone number string must be non-empty and starts with a plus sign. | ||
var re1 = /^\+/; | ||
// The phone number string must contain at least one alphanumeric character. | ||
var re2 = /[\da-zA-Z]+/; | ||
return re1.test(phoneNumber) && re2.test(phoneNumber); | ||
} | ||
exports.isPhoneNumber = isPhoneNumber; | ||
/** | ||
* Validates that a string is a valid web URL. | ||
@@ -129,0 +148,0 @@ * |
{ | ||
"name": "firebase-admin", | ||
"version": "5.0.1", | ||
"version": "5.1.0", | ||
"dependencies": { | ||
@@ -11,5 +11,5 @@ "@types/jsonwebtoken": { | ||
"@types/node": { | ||
"version": "8.0.10", | ||
"version": "8.0.16", | ||
"from": "@types/node@*", | ||
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.10.tgz" | ||
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.16.tgz" | ||
}, | ||
@@ -16,0 +16,0 @@ "base64url": { |
{ | ||
"name": "firebase-admin", | ||
"version": "5.0.1", | ||
"version": "5.1.0", | ||
"description": "Firebase admin SDK for Node.js", | ||
@@ -5,0 +5,0 @@ "author": "Firebase (https://firebase.google.com/)", |
Sorry, the diff of this file is too big to display
329213
4959