Skip to content

Commit fcd0836

Browse files
jordanarldtmatthewvolkjorgemoya
authored
refactor(auth): separate first and last name fields on user session (#2711)
* refactor(auth): separate first and last name fields on user session * Update .changeset/thin-things-repair.md Co-authored-by: Jorge Moya <[email protected]> --------- Co-authored-by: Matthew Volk <[email protected]> Co-authored-by: Jorge Moya <[email protected]>
1 parent aa35bec commit fcd0836

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

.changeset/thin-things-repair.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@bigcommerce/catalyst-core": minor
3+
---
4+
5+
Separate first and last name fields on user session object.

core/auth/index.ts

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ async function loginWithPassword(credentials: unknown): Promise<User | null> {
127127
await clearAnonymousSession();
128128

129129
return {
130-
name: `${result.customer.firstName} ${result.customer.lastName}`,
130+
firstName: result.customer.firstName,
131+
lastName: result.customer.lastName,
131132
email: result.customer.email,
132133
customerAccessToken: result.customerAccessToken.value,
133134
cartId: result.cart?.entityId,
@@ -163,7 +164,8 @@ async function loginWithJwt(credentials: unknown): Promise<User | null> {
163164
await clearAnonymousSession();
164165

165166
return {
166-
name: `${result.customer.firstName} ${result.customer.lastName}`,
167+
firstName: result.customer.firstName,
168+
lastName: result.customer.lastName,
167169
email: result.customer.email,
168170
customerAccessToken: result.customerAccessToken.value,
169171
impersonatorId,
@@ -206,6 +208,24 @@ const config = {
206208
};
207209
}
208210

211+
// user can actually be undefined
212+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
213+
if (user?.firstName !== undefined) {
214+
token.user = {
215+
...token.user,
216+
firstName: user.firstName,
217+
};
218+
}
219+
220+
// user can actually be undefined
221+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
222+
if (user?.lastName !== undefined) {
223+
token.user = {
224+
...token.user,
225+
lastName: user.lastName,
226+
};
227+
}
228+
209229
if (trigger === 'update') {
210230
const parsedSession = SessionUpdate.safeParse(session);
211231

@@ -228,6 +248,14 @@ const config = {
228248
session.user.cartId = token.user.cartId;
229249
}
230250

251+
if (token.user?.firstName !== undefined) {
252+
session.user.firstName = token.user.firstName;
253+
}
254+
255+
if (token.user?.lastName !== undefined) {
256+
session.user.lastName = token.user.lastName;
257+
}
258+
231259
return session;
232260
},
233261
},

core/auth/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ declare module 'next-auth' {
66
}
77

88
interface User {
9-
name?: string | null;
9+
firstName?: string | null;
10+
lastName?: string | null;
1011
email?: string | null;
1112
cartId?: string | null;
1213
customerAccessToken?: string;

0 commit comments

Comments
 (0)