From 6dd73e4a4199a913cc580724fa98b38789f3f122 Mon Sep 17 00:00:00 2001 From: Jaakko Lappalainen Date: Tue, 7 Jun 2022 14:31:42 +0100 Subject: [PATCH] fix(users): handle empty user base --- backend/src/posts/posts.controller.ts | 9 ++++----- backend/src/users/users.service.ts | 5 +++-- backend/src/users/utils.ts | 13 ++++--------- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/backend/src/posts/posts.controller.ts b/backend/src/posts/posts.controller.ts index 61908ae..9fed99b 100644 --- a/backend/src/posts/posts.controller.ts +++ b/backend/src/posts/posts.controller.ts @@ -73,17 +73,16 @@ export class PostsController { @Body() post: NewPostDocument, ): Promise { const { user } = request; - const { user_id: userId, name: userName } = user; + const { user_id: userId, name: userName, verified } = user; const last24hours = Date.now() - 86400000; const numberPostsCreatedToday = await this.service.countAllforUserByDate( userId, last24hours, ); - const maxNumberPostsPerDay = parseInt( - process.env.MAX_NUMBER_POSTS_PER_DAY, - 10, - ); + const maxNumberPostsPerDay = verified + ? parseInt(process.env.MAX_NUMBER_POSTS_PER_DAY, 10) + : 1; if (numberPostsCreatedToday >= maxNumberPostsPerDay) { throw new BadRequestException( 'You have reached the limit of ' + diff --git a/backend/src/users/users.service.ts b/backend/src/users/users.service.ts index 79d82fb..2d61675 100644 --- a/backend/src/users/users.service.ts +++ b/backend/src/users/users.service.ts @@ -8,8 +8,9 @@ export class UsersService { async exists({ name, email }: UserExistsPayload): Promise { if (email) { - const user = await getByEmail(email); - return user !== null && user !== undefined && user.email == email; + return getByEmail(email) + .then(() => true) + .catch(() => false); } else if (name) { const user = await getByUserName(name); return user !== null && user !== undefined && user.displayName == name; diff --git a/backend/src/users/utils.ts b/backend/src/users/utils.ts index 14ded9e..2547ad1 100644 --- a/backend/src/users/utils.ts +++ b/backend/src/users/utils.ts @@ -10,26 +10,21 @@ export const getByUserName = async (userName, nextPageToken = undefined) => { // List batch of users, 1000 at a time. let moreResults = true; let user; - while (moreResults && !user) { + while (moreResults) { const listUsersResult = await listUsers(nextPageToken); for (const u in listUsersResult.users) { const userRecord = listUsersResult.users[u]; - console.log( - userRecord.displayName, - userName, - userRecord.displayName === userName, - ); if (userRecord.displayName === userName) { user = userRecord; break; } - nextPageToken = listUsersResult.pageToken; - moreResults = !!nextPageToken; } + nextPageToken = listUsersResult.pageToken; + moreResults = !!nextPageToken; } return user; }; export const getByEmail = async (userEmail: string) => { - return await firebase.auth().getUserByEmail(userEmail); + return firebase.auth().getUserByEmail(userEmail); };