From 5154ed6ca112de2e2cf2076d1a9e0ad04f13e319 Mon Sep 17 00:00:00 2001 From: Mike Dedys Date: Tue, 28 Feb 2023 15:28:58 -0500 Subject: [PATCH 1/4] Explicilty set createdAt and lastLoginAt when cloning UserImpl --- packages/auth/src/core/user/user_impl.test.ts | 6 +++++- packages/auth/src/core/user/user_impl.ts | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/auth/src/core/user/user_impl.test.ts b/packages/auth/src/core/user/user_impl.test.ts index 839dc104547..c9d26b01053 100644 --- a/packages/auth/src/core/user/user_impl.test.ts +++ b/packages/auth/src/core/user/user_impl.test.ts @@ -274,7 +274,9 @@ describe('core/user/user_impl', () => { uid: 'i-am-uid' } ], - tenantId: 'tenant-id' + tenantId: 'tenant-id', + createdAt: "2018-01-01 13:02:56.12345678", + lastLoginAt: "2018-01-05 13:02:56.12345678" }); const newAuth = await testAuth(); @@ -294,6 +296,8 @@ describe('core/user/user_impl', () => { uid: 'i-am-uid' } ]); + expect(copy.metadata.creationTime).to.eq("2018-01-01 13:02:56.12345678"); + expect(copy.metadata.lastSignInTime).to.eq("2018-01-05 13:02:56.12345678"); }); }); }); diff --git a/packages/auth/src/core/user/user_impl.ts b/packages/auth/src/core/user/user_impl.ts index 65130dffe73..872b6c44aa9 100644 --- a/packages/auth/src/core/user/user_impl.ts +++ b/packages/auth/src/core/user/user_impl.ts @@ -142,6 +142,8 @@ export class UserImpl implements UserInternal { _clone(auth: AuthInternal): UserInternal { return new UserImpl({ ...this, + createdAt: this.metadata.creationTime, + lastLoginAt: this.metadata.lastSignInTime, auth, stsTokenManager: this.stsTokenManager._clone() }); From 86556a3cc38959b5b911480333090594df97ceca Mon Sep 17 00:00:00 2001 From: Mike Dedys Date: Wed, 1 Mar 2023 08:10:10 -0500 Subject: [PATCH 2/4] Use metadata._copy instead of manually setting metadata --- packages/auth/src/core/user/user_impl.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/auth/src/core/user/user_impl.ts b/packages/auth/src/core/user/user_impl.ts index 872b6c44aa9..c31a8385844 100644 --- a/packages/auth/src/core/user/user_impl.ts +++ b/packages/auth/src/core/user/user_impl.ts @@ -140,13 +140,15 @@ export class UserImpl implements UserInternal { } _clone(auth: AuthInternal): UserInternal { - return new UserImpl({ + const newUser = new UserImpl({ ...this, - createdAt: this.metadata.creationTime, - lastLoginAt: this.metadata.lastSignInTime, auth, stsTokenManager: this.stsTokenManager._clone() - }); + }) + + newUser.metadata._copy(this.metadata) + + return newUser; } _onReload(callback: NextFn): void { From a4e22175ba9157b96af3fcefddfdd454165fbd8a Mon Sep 17 00:00:00 2001 From: Mike Dedys Date: Thu, 2 Mar 2023 09:17:33 -0500 Subject: [PATCH 3/4] Fix test case for user_imply _clone function --- packages/auth/src/core/user/user_impl.test.ts | 7 +++---- packages/auth/src/core/user/user_impl.ts | 6 ++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/auth/src/core/user/user_impl.test.ts b/packages/auth/src/core/user/user_impl.test.ts index c9d26b01053..fc0361d8f59 100644 --- a/packages/auth/src/core/user/user_impl.test.ts +++ b/packages/auth/src/core/user/user_impl.test.ts @@ -275,8 +275,8 @@ describe('core/user/user_impl', () => { } ], tenantId: 'tenant-id', - createdAt: "2018-01-01 13:02:56.12345678", - lastLoginAt: "2018-01-05 13:02:56.12345678" + createdAt: '2018-01-01 13:02:56.12345678', + lastLoginAt: '2018-01-05 13:02:56.12345678' }); const newAuth = await testAuth(); @@ -296,8 +296,7 @@ describe('core/user/user_impl', () => { uid: 'i-am-uid' } ]); - expect(copy.metadata.creationTime).to.eq("2018-01-01 13:02:56.12345678"); - expect(copy.metadata.lastSignInTime).to.eq("2018-01-05 13:02:56.12345678"); + expect(copy.metadata.toJSON()).to.eql(user.metadata.toJSON()); }); }); }); diff --git a/packages/auth/src/core/user/user_impl.ts b/packages/auth/src/core/user/user_impl.ts index c31a8385844..44192cc4617 100644 --- a/packages/auth/src/core/user/user_impl.ts +++ b/packages/auth/src/core/user/user_impl.ts @@ -144,10 +144,8 @@ export class UserImpl implements UserInternal { ...this, auth, stsTokenManager: this.stsTokenManager._clone() - }) - - newUser.metadata._copy(this.metadata) - + }); + newUser.metadata._copy(this.metadata); return newUser; } From 9fdbdc6bd73158edb3b452b9649f00d2edd2d073 Mon Sep 17 00:00:00 2001 From: prameshj Date: Mon, 6 Mar 2023 22:04:01 -0800 Subject: [PATCH 4/4] Create fluffy-seas-behave.md --- .changeset/fluffy-seas-behave.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fluffy-seas-behave.md diff --git a/.changeset/fluffy-seas-behave.md b/.changeset/fluffy-seas-behave.md new file mode 100644 index 00000000000..073429be5d8 --- /dev/null +++ b/.changeset/fluffy-seas-behave.md @@ -0,0 +1,5 @@ +--- +"@firebase/auth": patch +--- + +Explicitly set createdAt and lastLoginAt when cloning UserImpl