Skip to content

Commit 8d711d3

Browse files
committed
🚑 Fix user new check with wallet & email (#963)
1 parent 2f114eb commit 8d711d3

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

‎src/routes/users/registerLogin.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
checkCosmosSignPayload,
1919
setAuthCookies,
2020
clearAuthCookies,
21-
userByEmailQuery,
21+
userOrWalletByEmailQuery,
2222
normalizeUserEmail,
2323
getUserAgentIsApp,
2424
checkEVMSignPayload,
@@ -308,7 +308,7 @@ router.post(
308308

309309
if (email) {
310310
if (authCoreUserId && oldEmail) throw new ValidationError('EMAIL_CANNOT_BE_CHANGED');
311-
await userByEmailQuery(user, email);
311+
await userOrWalletByEmailQuery({ user }, email);
312312
const {
313313
normalizedEmail,
314314
isEmailBlacklisted,

‎src/util/api/users/index.ts‎

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,14 +194,26 @@ export function checkEVMSignPayload({
194194
return actualPayload;
195195
}
196196

197-
export function userByEmailQuery(user, email, isEmailVerified = false) {
197+
export async function userOrWalletByEmailQuery({
198+
user,
199+
evmWallet,
200+
likeWallet,
201+
}: {
202+
user?: string,
203+
evmWallet?: string,
204+
likeWallet?: string,
205+
}, email: string, isEmailVerified = false): Promise<boolean> {
198206
return dbRef.where('email', '==', email).get().then((snapshot) => {
199207
snapshot.forEach((doc) => {
200208
const docUser = doc.id;
201-
if (user !== docUser) {
209+
const docData = doc.data();
210+
if (
211+
(user && user !== docUser)
212+
|| (evmWallet && evmWallet !== docData.evmWallet)
213+
|| (likeWallet && likeWallet !== docData.likeWallet)
214+
) {
202215
let payload: any = null;
203216
if (isEmailVerified) {
204-
const { evmWallet, likeWallet } = doc.data();
205217
payload = {
206218
evmWallet: maskString(evmWallet),
207219
likeWallet: maskString(likeWallet, { start: 11 }),
@@ -316,7 +328,9 @@ async function userInfoQuery({
316328
return { isOldUser, oldUserObj };
317329
}) : Promise.resolve({ isOldUser: false, oldUserObj: null });
318330

319-
const emailQuery = email ? userByEmailQuery(user, email, isEmailVerified) : Promise.resolve();
331+
const emailQuery = email
332+
? userOrWalletByEmailQuery({ user, evmWallet, likeWallet }, email, isEmailVerified)
333+
: Promise.resolve();
320334

321335
const cosmosWalletQuery = cosmosWallet ? dbRef.where('cosmosWallet', '==', cosmosWallet).get().then((snapshot) => {
322336
snapshot.forEach((doc) => {

0 commit comments

Comments
 (0)