Skip to content

Commit

Permalink
fix(users): handle empty user base
Browse files Browse the repository at this point in the history
  • Loading branch information
jkklapp committed Jun 7, 2022
1 parent baa6fc8 commit 6dd73e4
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 16 deletions.
9 changes: 4 additions & 5 deletions backend/src/posts/posts.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,16 @@ export class PostsController {
@Body() post: NewPostDocument,
): Promise<ResolvedPostDocument> {
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 ' +
Expand Down
5 changes: 3 additions & 2 deletions backend/src/users/users.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ export class UsersService {

async exists({ name, email }: UserExistsPayload): Promise<boolean> {
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;
Expand Down
13 changes: 4 additions & 9 deletions backend/src/users/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
};

0 comments on commit 6dd73e4

Please sign in to comment.